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

Side by Side Diff: third_party/WebKit/Source/core/frame/FrameView.cpp

Issue 2764313002: Move plugins to be stored in HTMLPlugInElement. (Closed)
Patch Set: Update comments about duplicating code Created 3 years, 8 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) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999 Lars Knoll <knoll@kde.org> 3 * 1999 Lars Knoll <knoll@kde.org>
4 * 1999 Antti Koivisto <koivisto@kde.org> 4 * 1999 Antti Koivisto <koivisto@kde.org>
5 * 2000 Dirk Mueller <mueller@kde.org> 5 * 2000 Dirk Mueller <mueller@kde.org>
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com)
8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
9 * Copyright (C) 2009 Google Inc. All rights reserved. 9 * Copyright (C) 2009 Google Inc. All rights reserved.
10 * 10 *
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 ASSERT(m_hasBeenDisposed); 229 ASSERT(m_hasBeenDisposed);
230 } 230 }
231 231
232 DEFINE_TRACE(FrameView) { 232 DEFINE_TRACE(FrameView) {
233 visitor->trace(m_frame); 233 visitor->trace(m_frame);
234 visitor->trace(m_fragmentAnchor); 234 visitor->trace(m_fragmentAnchor);
235 visitor->trace(m_scrollableAreas); 235 visitor->trace(m_scrollableAreas);
236 visitor->trace(m_animatingScrollableAreas); 236 visitor->trace(m_animatingScrollableAreas);
237 visitor->trace(m_autoSizeInfo); 237 visitor->trace(m_autoSizeInfo);
238 visitor->trace(m_children); 238 visitor->trace(m_children);
239 visitor->trace(m_plugins);
239 visitor->trace(m_viewportScrollableArea); 240 visitor->trace(m_viewportScrollableArea);
240 visitor->trace(m_visibilityObserver); 241 visitor->trace(m_visibilityObserver);
241 visitor->trace(m_scrollAnchor); 242 visitor->trace(m_scrollAnchor);
242 visitor->trace(m_anchoringAdjustmentQueue); 243 visitor->trace(m_anchoringAdjustmentQueue);
243 visitor->trace(m_scrollbarManager); 244 visitor->trace(m_scrollbarManager);
244 visitor->trace(m_printContext); 245 visitor->trace(m_printContext);
245 FrameViewBase::trace(visitor); 246 FrameViewBase::trace(visitor);
246 ScrollableArea::trace(visitor); 247 ScrollableArea::trace(visitor);
247 } 248 }
248 249
(...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1476 void FrameView::updateGeometries() { 1477 void FrameView::updateGeometries() {
1477 Vector<RefPtr<LayoutPart>> parts; 1478 Vector<RefPtr<LayoutPart>> parts;
1478 copyToVector(m_parts, parts); 1479 copyToVector(m_parts, parts);
1479 1480
1480 for (auto part : parts) { 1481 for (auto part : parts) {
1481 // Script or plugins could detach the frame so abort processing if that 1482 // Script or plugins could detach the frame so abort processing if that
1482 // happens. 1483 // happens.
1483 if (layoutViewItem().isNull()) 1484 if (layoutViewItem().isNull())
1484 break; 1485 break;
1485 1486
1486 if (FrameViewBase* frameViewBase = part->frameViewBase()) { 1487 if (FrameViewBase* frameViewBase = part->pluginOrFrame()) {
1487 if (frameViewBase->isFrameView()) { 1488 if (frameViewBase->isFrameView()) {
1488 FrameView* frameView = toFrameView(frameViewBase); 1489 FrameView* frameView = toFrameView(frameViewBase);
1489 bool didNeedLayout = frameView->needsLayout(); 1490 bool didNeedLayout = frameView->needsLayout();
1490 part->updateGeometry(); 1491 part->updateGeometry();
1491 if (!didNeedLayout && !frameView->shouldThrottleRendering()) 1492 if (!didNeedLayout && !frameView->shouldThrottleRendering())
1492 frameView->checkDoesNotNeedLayout(); 1493 frameView->checkDoesNotNeedLayout();
1493 } else { 1494 } else {
1494 part->updateGeometry(); 1495 part->updateGeometry();
1495 } 1496 }
1496 } 1497 }
(...skipping 1795 matching lines...) Expand 10 before | Expand all | Expand 10 after
3292 if (needsLayout()) 3293 if (needsLayout())
3293 layout(); 3294 layout();
3294 3295
3295 checkDoesNotNeedLayout(); 3296 checkDoesNotNeedLayout();
3296 3297
3297 // WebView plugins need to update regardless of whether the 3298 // WebView plugins need to update regardless of whether the
3298 // LayoutEmbeddedObject that owns them needed layout. 3299 // LayoutEmbeddedObject that owns them needed layout.
3299 // TODO(leviw): This currently runs the entire lifecycle on plugin WebViews. 3300 // TODO(leviw): This currently runs the entire lifecycle on plugin WebViews.
3300 // We should have a way to only run these other Documents to the same 3301 // We should have a way to only run these other Documents to the same
3301 // lifecycle stage as this frame. 3302 // lifecycle stage as this frame.
3302 const ChildrenSet* viewChildren = children(); 3303 for (const Member<PluginView>& plugin : *plugins()) {
3303 for (const Member<FrameViewBase>& child : *viewChildren) { 3304 plugin->updateAllLifecyclePhases();
3304 if ((*child).isPluginContainer())
3305 toPluginView(child.get())->updateAllLifecyclePhases();
3306 } 3305 }
3307 checkDoesNotNeedLayout(); 3306 checkDoesNotNeedLayout();
3308 3307
3309 // FIXME: Calling layout() shouldn't trigger script execution or have any 3308 // FIXME: Calling layout() shouldn't trigger script execution or have any
3310 // observable effects on the frame tree but we're not quite there yet. 3309 // observable effects on the frame tree but we're not quite there yet.
3311 HeapVector<Member<FrameView>> frameViews; 3310 HeapVector<Member<FrameView>> frameViews;
3312 for (Frame* child = m_frame->tree().firstChild(); child; 3311 for (Frame* child = m_frame->tree().firstChild(); child;
3313 child = child->tree().nextSibling()) { 3312 child = child->tree().nextSibling()) {
3314 if (!child->isLocalFrame()) 3313 if (!child->isLocalFrame())
3315 continue; 3314 continue;
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
3748 FrameViewBase::setParent(parentView); 3747 FrameViewBase::setParent(parentView);
3749 3748
3750 updateParentScrollableAreaSet(); 3749 updateParentScrollableAreaSet();
3751 setupRenderThrottling(); 3750 setupRenderThrottling();
3752 3751
3753 if (parentFrameView()) 3752 if (parentFrameView())
3754 m_subtreeThrottled = parentFrameView()->canThrottleRendering(); 3753 m_subtreeThrottled = parentFrameView()->canThrottleRendering();
3755 } 3754 }
3756 3755
3757 void FrameView::removeChild(FrameViewBase* child) { 3756 void FrameView::removeChild(FrameViewBase* child) {
3758 ASSERT(child->parent() == this); 3757 DCHECK(child->parent() == this);
3759 3758
3760 if (child->isFrameView() && 3759 if (child->isFrameView() &&
3761 !RuntimeEnabledFeatures::rootLayerScrollingEnabled()) 3760 !RuntimeEnabledFeatures::rootLayerScrollingEnabled())
3762 removeScrollableArea(toFrameView(child)); 3761 removeScrollableArea(toFrameView(child));
3763 3762
3764 child->setParent(0); 3763 child->setParent(nullptr);
3765 m_children.erase(child); 3764 m_children.erase(child);
3766 } 3765 }
3767 3766
3767 void FrameView::removePlugin(PluginView* plugin) {
3768 DCHECK(plugin->parent() == this);
3769 DCHECK(m_plugins.contains(plugin));
3770 plugin->setParent(nullptr);
3771 m_plugins.erase(plugin);
3772 }
3773
3774 void FrameView::addPlugin(PluginView* plugin) {
3775 DCHECK(!plugin->parent());
3776 DCHECK(!m_plugins.contains(plugin));
3777 plugin->setParent(this);
3778 m_plugins.insert(plugin);
3779 }
3780
3768 bool FrameView::visualViewportSuppliesScrollbars() { 3781 bool FrameView::visualViewportSuppliesScrollbars() {
3769 // On desktop, we always use the layout viewport's scrollbars. 3782 // On desktop, we always use the layout viewport's scrollbars.
3770 if (!m_frame->settings() || !m_frame->settings()->getViewportEnabled() || 3783 if (!m_frame->settings() || !m_frame->settings()->getViewportEnabled() ||
3771 !m_frame->document() || !m_frame->page()) 3784 !m_frame->document() || !m_frame->page())
3772 return false; 3785 return false;
3773 3786
3774 const TopDocumentRootScrollerController& controller = 3787 const TopDocumentRootScrollerController& controller =
3775 m_frame->page()->globalRootScrollerController(); 3788 m_frame->page()->globalRootScrollerController();
3776 3789
3777 if (!layoutViewportScrollableArea()) 3790 if (!layoutViewportScrollableArea())
(...skipping 16 matching lines...) Expand all
3794 page->chromeClient().setCursor(cursor, m_frame); 3807 page->chromeClient().setCursor(cursor, m_frame);
3795 } 3808 }
3796 3809
3797 void FrameView::frameRectsChanged() { 3810 void FrameView::frameRectsChanged() {
3798 TRACE_EVENT0("blink", "FrameView::frameRectsChanged"); 3811 TRACE_EVENT0("blink", "FrameView::frameRectsChanged");
3799 if (layoutSizeFixedToFrameSize()) 3812 if (layoutSizeFixedToFrameSize())
3800 setLayoutSizeInternal(frameRect().size()); 3813 setLayoutSizeInternal(frameRect().size());
3801 3814
3802 for (const auto& child : m_children) 3815 for (const auto& child : m_children)
3803 child->frameRectsChanged(); 3816 child->frameRectsChanged();
3817
3818 for (const auto& plugin : m_plugins)
3819 plugin->frameRectsChanged();
3804 } 3820 }
3805 3821
3806 void FrameView::setLayoutSizeInternal(const IntSize& size) { 3822 void FrameView::setLayoutSizeInternal(const IntSize& size) {
3807 if (m_layoutSize == size) 3823 if (m_layoutSize == size)
3808 return; 3824 return;
3809 3825
3810 m_layoutSize = size; 3826 m_layoutSize = size;
3811 contentsResized(); 3827 contentsResized();
3812 } 3828 }
3813 3829
(...skipping 30 matching lines...) Expand all
3844 page->globalRootScrollerController(); 3860 page->globalRootScrollerController();
3845 if (layoutViewport == controller.rootScrollerArea()) 3861 if (layoutViewport == controller.rootScrollerArea())
3846 visibleSize = controller.rootScrollerVisibleArea(); 3862 visibleSize = controller.rootScrollerVisibleArea();
3847 3863
3848 IntSize maximumOffset = 3864 IntSize maximumOffset =
3849 toIntSize(-scrollOrigin() + (contentBounds - visibleSize)); 3865 toIntSize(-scrollOrigin() + (contentBounds - visibleSize));
3850 return maximumOffset.expandedTo(minimumScrollOffsetInt()); 3866 return maximumOffset.expandedTo(minimumScrollOffsetInt());
3851 } 3867 }
3852 3868
3853 void FrameView::addChild(FrameViewBase* child) { 3869 void FrameView::addChild(FrameViewBase* child) {
3854 ASSERT(child != this && !child->parent()); 3870 DCHECK(child != this && !child->parent());
3871 DCHECK(!child->isPluginView());
3855 child->setParent(this); 3872 child->setParent(this);
3856 m_children.insert(child); 3873 m_children.insert(child);
3857 } 3874 }
3858 3875
3859 void FrameView::setScrollbarModes(ScrollbarMode horizontalMode, 3876 void FrameView::setScrollbarModes(ScrollbarMode horizontalMode,
3860 ScrollbarMode verticalMode, 3877 ScrollbarMode verticalMode,
3861 bool horizontalLock, 3878 bool horizontalLock,
3862 bool verticalLock) { 3879 bool verticalLock) {
3863 bool needsUpdate = false; 3880 bool needsUpdate = false;
3864 3881
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after
4640 // and potentially child frame views. 4657 // and potentially child frame views.
4641 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree); 4658 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree);
4642 4659
4643 FrameViewBase::setParentVisible(visible); 4660 FrameViewBase::setParentVisible(visible);
4644 4661
4645 if (!isSelfVisible()) 4662 if (!isSelfVisible())
4646 return; 4663 return;
4647 4664
4648 for (const auto& child : m_children) 4665 for (const auto& child : m_children)
4649 child->setParentVisible(visible); 4666 child->setParentVisible(visible);
4667
4668 for (const auto& plugin : m_plugins)
4669 plugin->setParentVisible(visible);
4650 } 4670 }
4651 4671
4652 void FrameView::show() { 4672 void FrameView::show() {
4653 if (!isSelfVisible()) { 4673 if (!isSelfVisible()) {
4654 setSelfVisible(true); 4674 setSelfVisible(true);
4655 if (ScrollingCoordinator* scrollingCoordinator = 4675 if (ScrollingCoordinator* scrollingCoordinator =
4656 this->scrollingCoordinator()) 4676 this->scrollingCoordinator())
4657 scrollingCoordinator->frameViewVisibilityDidChange(); 4677 scrollingCoordinator->frameViewVisibilityDidChange();
4658 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree); 4678 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree);
4659 updateParentScrollableAreaSet(); 4679 updateParentScrollableAreaSet();
4660 if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled() && 4680 if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled() &&
4661 !RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { 4681 !RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
4662 // The existance of scrolling properties depends on visibility through 4682 // The existance of scrolling properties depends on visibility through
4663 // isScrollable() so ensure properties are updated if visibility changes. 4683 // isScrollable() so ensure properties are updated if visibility changes.
4664 setNeedsPaintPropertyUpdate(); 4684 setNeedsPaintPropertyUpdate();
4665 } 4685 }
4666 if (isParentVisible()) { 4686 if (isParentVisible()) {
4667 for (const auto& child : m_children) 4687 for (const auto& child : m_children)
4668 child->setParentVisible(true); 4688 child->setParentVisible(true);
4689
4690 for (const auto& plugin : m_plugins)
4691 plugin->setParentVisible(true);
4669 } 4692 }
4670 } 4693 }
4671 4694
4672 FrameViewBase::show(); 4695 FrameViewBase::show();
4673 } 4696 }
4674 4697
4675 void FrameView::hide() { 4698 void FrameView::hide() {
4676 if (isSelfVisible()) { 4699 if (isSelfVisible()) {
4677 if (isParentVisible()) { 4700 if (isParentVisible()) {
4678 for (const auto& child : m_children) 4701 for (const auto& child : m_children)
4679 child->setParentVisible(false); 4702 child->setParentVisible(false);
4703
4704 for (const auto& plugin : m_plugins)
4705 plugin->setParentVisible(false);
4680 } 4706 }
4681 setSelfVisible(false); 4707 setSelfVisible(false);
4682 if (ScrollingCoordinator* scrollingCoordinator = 4708 if (ScrollingCoordinator* scrollingCoordinator =
4683 this->scrollingCoordinator()) 4709 this->scrollingCoordinator())
4684 scrollingCoordinator->frameViewVisibilityDidChange(); 4710 scrollingCoordinator->frameViewVisibilityDidChange();
4685 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree); 4711 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree);
4686 updateParentScrollableAreaSet(); 4712 updateParentScrollableAreaSet();
4687 if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled() && 4713 if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled() &&
4688 !RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { 4714 !RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
4689 // The existance of scrolling properties depends on visibility through 4715 // The existance of scrolling properties depends on visibility through
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
5241 void FrameView::setAnimationHost( 5267 void FrameView::setAnimationHost(
5242 std::unique_ptr<CompositorAnimationHost> host) { 5268 std::unique_ptr<CompositorAnimationHost> host) {
5243 m_animationHost = std::move(host); 5269 m_animationHost = std::move(host);
5244 } 5270 }
5245 5271
5246 LayoutUnit FrameView::caretWidth() const { 5272 LayoutUnit FrameView::caretWidth() const {
5247 return LayoutUnit(getHostWindow()->windowToViewportScalar(1)); 5273 return LayoutUnit(getHostWindow()->windowToViewportScalar(1));
5248 } 5274 }
5249 5275
5250 } // namespace blink 5276 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698