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

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

Issue 2764313002: Move plugins to be stored in HTMLPlugInElement. (Closed)
Patch Set: Rebase and merge 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 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 ASSERT(m_hasBeenDisposed); 230 ASSERT(m_hasBeenDisposed);
231 } 231 }
232 232
233 DEFINE_TRACE(FrameView) { 233 DEFINE_TRACE(FrameView) {
234 visitor->trace(m_frame); 234 visitor->trace(m_frame);
235 visitor->trace(m_fragmentAnchor); 235 visitor->trace(m_fragmentAnchor);
236 visitor->trace(m_scrollableAreas); 236 visitor->trace(m_scrollableAreas);
237 visitor->trace(m_animatingScrollableAreas); 237 visitor->trace(m_animatingScrollableAreas);
238 visitor->trace(m_autoSizeInfo); 238 visitor->trace(m_autoSizeInfo);
239 visitor->trace(m_children); 239 visitor->trace(m_children);
240 visitor->trace(m_plugins);
240 visitor->trace(m_viewportScrollableArea); 241 visitor->trace(m_viewportScrollableArea);
241 visitor->trace(m_visibilityObserver); 242 visitor->trace(m_visibilityObserver);
242 visitor->trace(m_scrollAnchor); 243 visitor->trace(m_scrollAnchor);
243 visitor->trace(m_anchoringAdjustmentQueue); 244 visitor->trace(m_anchoringAdjustmentQueue);
244 visitor->trace(m_scrollbarManager); 245 visitor->trace(m_scrollbarManager);
245 visitor->trace(m_printContext); 246 visitor->trace(m_printContext);
246 FrameViewBase::trace(visitor); 247 FrameViewBase::trace(visitor);
247 ScrollableArea::trace(visitor); 248 ScrollableArea::trace(visitor);
248 } 249 }
249 250
(...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1477 void FrameView::updateGeometries() { 1478 void FrameView::updateGeometries() {
1478 Vector<RefPtr<LayoutPart>> parts; 1479 Vector<RefPtr<LayoutPart>> parts;
1479 copyToVector(m_parts, parts); 1480 copyToVector(m_parts, parts);
1480 1481
1481 for (auto part : parts) { 1482 for (auto part : parts) {
1482 // Script or plugins could detach the frame so abort processing if that 1483 // Script or plugins could detach the frame so abort processing if that
1483 // happens. 1484 // happens.
1484 if (layoutViewItem().isNull()) 1485 if (layoutViewItem().isNull())
1485 break; 1486 break;
1486 1487
1487 if (FrameViewBase* frameViewBase = part->frameViewBase()) { 1488 if (FrameViewBase* frameViewBase = part->pluginOrFrame()) {
1488 if (frameViewBase->isFrameView()) { 1489 if (frameViewBase->isFrameView()) {
1489 FrameView* frameView = toFrameView(frameViewBase); 1490 FrameView* frameView = toFrameView(frameViewBase);
1490 bool didNeedLayout = frameView->needsLayout(); 1491 bool didNeedLayout = frameView->needsLayout();
1491 part->updateGeometry(); 1492 part->updateGeometry();
1492 if (!didNeedLayout && !frameView->shouldThrottleRendering()) 1493 if (!didNeedLayout && !frameView->shouldThrottleRendering())
1493 frameView->checkDoesNotNeedLayout(); 1494 frameView->checkDoesNotNeedLayout();
1494 } else { 1495 } else {
1495 part->updateGeometry(); 1496 part->updateGeometry();
1496 } 1497 }
1497 } 1498 }
(...skipping 1820 matching lines...) Expand 10 before | Expand all | Expand 10 after
3318 if (needsLayout()) 3319 if (needsLayout())
3319 layout(); 3320 layout();
3320 3321
3321 checkDoesNotNeedLayout(); 3322 checkDoesNotNeedLayout();
3322 3323
3323 // WebView plugins need to update regardless of whether the 3324 // WebView plugins need to update regardless of whether the
3324 // LayoutEmbeddedObject that owns them needed layout. 3325 // LayoutEmbeddedObject that owns them needed layout.
3325 // TODO(leviw): This currently runs the entire lifecycle on plugin WebViews. 3326 // TODO(leviw): This currently runs the entire lifecycle on plugin WebViews.
3326 // We should have a way to only run these other Documents to the same 3327 // We should have a way to only run these other Documents to the same
3327 // lifecycle stage as this frame. 3328 // lifecycle stage as this frame.
3328 const ChildrenSet* viewChildren = children(); 3329 for (const Member<PluginView>& plugin : *plugins()) {
3329 for (const Member<FrameViewBase>& child : *viewChildren) { 3330 plugin->updateAllLifecyclePhases();
3330 if ((*child).isPluginContainer())
3331 toPluginView(child.get())->updateAllLifecyclePhases();
3332 } 3331 }
3333 checkDoesNotNeedLayout(); 3332 checkDoesNotNeedLayout();
3334 3333
3335 // FIXME: Calling layout() shouldn't trigger script execution or have any 3334 // FIXME: Calling layout() shouldn't trigger script execution or have any
3336 // observable effects on the frame tree but we're not quite there yet. 3335 // observable effects on the frame tree but we're not quite there yet.
3337 HeapVector<Member<FrameView>> frameViews; 3336 HeapVector<Member<FrameView>> frameViews;
3338 for (Frame* child = m_frame->tree().firstChild(); child; 3337 for (Frame* child = m_frame->tree().firstChild(); child;
3339 child = child->tree().nextSibling()) { 3338 child = child->tree().nextSibling()) {
3340 if (!child->isLocalFrame()) 3339 if (!child->isLocalFrame())
3341 continue; 3340 continue;
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
3774 FrameViewBase::setParent(parentView); 3773 FrameViewBase::setParent(parentView);
3775 3774
3776 updateParentScrollableAreaSet(); 3775 updateParentScrollableAreaSet();
3777 setupRenderThrottling(); 3776 setupRenderThrottling();
3778 3777
3779 if (parentFrameView()) 3778 if (parentFrameView())
3780 m_subtreeThrottled = parentFrameView()->canThrottleRendering(); 3779 m_subtreeThrottled = parentFrameView()->canThrottleRendering();
3781 } 3780 }
3782 3781
3783 void FrameView::removeChild(FrameViewBase* child) { 3782 void FrameView::removeChild(FrameViewBase* child) {
3784 ASSERT(child->parent() == this); 3783 CHECK(child->parent() == this);
dcheng 2017/04/04 07:20:12 Nit: DCHECK is the equivalent of ASSERT
joelhockey 2017/04/04 23:39:05 Done, also changed CHECK below in removePlugin to
3785 3784
3786 if (child->isFrameView() && 3785 if (child->isFrameView() &&
3787 !RuntimeEnabledFeatures::rootLayerScrollingEnabled()) 3786 !RuntimeEnabledFeatures::rootLayerScrollingEnabled())
3788 removeScrollableArea(toFrameView(child)); 3787 removeScrollableArea(toFrameView(child));
3789 3788
3790 child->setParent(0); 3789 child->setParent(nullptr);
3791 m_children.erase(child); 3790 m_children.erase(child);
3792 } 3791 }
3793 3792
3793 void FrameView::removePlugin(PluginView* plugin) {
3794 CHECK(plugin->parent() == this);
3795 DCHECK(m_plugins.contains(plugin));
3796 plugin->setParent(nullptr);
3797 m_plugins.erase(plugin);
3798 }
3799
3800 void FrameView::addPlugin(PluginView* plugin) {
3801 DCHECK(!plugin->parent());
3802 DCHECK(!m_plugins.contains(plugin));
3803 plugin->setParent(this);
3804 m_plugins.insert(plugin);
3805 }
3806
3794 bool FrameView::visualViewportSuppliesScrollbars() { 3807 bool FrameView::visualViewportSuppliesScrollbars() {
3795 // On desktop, we always use the layout viewport's scrollbars. 3808 // On desktop, we always use the layout viewport's scrollbars.
3796 if (!m_frame->settings() || !m_frame->settings()->getViewportEnabled() || 3809 if (!m_frame->settings() || !m_frame->settings()->getViewportEnabled() ||
3797 !m_frame->document() || !m_frame->page()) 3810 !m_frame->document() || !m_frame->page())
3798 return false; 3811 return false;
3799 3812
3800 const TopDocumentRootScrollerController& controller = 3813 const TopDocumentRootScrollerController& controller =
3801 m_frame->page()->globalRootScrollerController(); 3814 m_frame->page()->globalRootScrollerController();
3802 3815
3803 if (!layoutViewportScrollableArea()) 3816 if (!layoutViewportScrollableArea())
(...skipping 16 matching lines...) Expand all
3820 page->chromeClient().setCursor(cursor, m_frame); 3833 page->chromeClient().setCursor(cursor, m_frame);
3821 } 3834 }
3822 3835
3823 void FrameView::frameRectsChanged() { 3836 void FrameView::frameRectsChanged() {
3824 TRACE_EVENT0("blink", "FrameView::frameRectsChanged"); 3837 TRACE_EVENT0("blink", "FrameView::frameRectsChanged");
3825 if (layoutSizeFixedToFrameSize()) 3838 if (layoutSizeFixedToFrameSize())
3826 setLayoutSizeInternal(frameRect().size()); 3839 setLayoutSizeInternal(frameRect().size());
3827 3840
3828 for (const auto& child : m_children) 3841 for (const auto& child : m_children)
3829 child->frameRectsChanged(); 3842 child->frameRectsChanged();
3843
3844 for (const auto& plugin : m_plugins)
3845 plugin->frameRectsChanged();
3830 } 3846 }
3831 3847
3832 void FrameView::setLayoutSizeInternal(const IntSize& size) { 3848 void FrameView::setLayoutSizeInternal(const IntSize& size) {
3833 if (m_layoutSize == size) 3849 if (m_layoutSize == size)
3834 return; 3850 return;
3835 3851
3836 m_layoutSize = size; 3852 m_layoutSize = size;
3837 contentsResized(); 3853 contentsResized();
3838 } 3854 }
3839 3855
(...skipping 30 matching lines...) Expand all
3870 page->globalRootScrollerController(); 3886 page->globalRootScrollerController();
3871 if (layoutViewport == controller.rootScrollerArea()) 3887 if (layoutViewport == controller.rootScrollerArea())
3872 visibleSize = controller.rootScrollerVisibleArea(); 3888 visibleSize = controller.rootScrollerVisibleArea();
3873 3889
3874 IntSize maximumOffset = 3890 IntSize maximumOffset =
3875 toIntSize(-scrollOrigin() + (contentBounds - visibleSize)); 3891 toIntSize(-scrollOrigin() + (contentBounds - visibleSize));
3876 return maximumOffset.expandedTo(minimumScrollOffsetInt()); 3892 return maximumOffset.expandedTo(minimumScrollOffsetInt());
3877 } 3893 }
3878 3894
3879 void FrameView::addChild(FrameViewBase* child) { 3895 void FrameView::addChild(FrameViewBase* child) {
3880 ASSERT(child != this && !child->parent()); 3896 DCHECK(child != this && !child->parent());
3897 DCHECK(!child->isPluginView());
3881 child->setParent(this); 3898 child->setParent(this);
3882 m_children.insert(child); 3899 m_children.insert(child);
3883 } 3900 }
3884 3901
3885 void FrameView::setScrollbarModes(ScrollbarMode horizontalMode, 3902 void FrameView::setScrollbarModes(ScrollbarMode horizontalMode,
3886 ScrollbarMode verticalMode, 3903 ScrollbarMode verticalMode,
3887 bool horizontalLock, 3904 bool horizontalLock,
3888 bool verticalLock) { 3905 bool verticalLock) {
3889 bool needsUpdate = false; 3906 bool needsUpdate = false;
3890 3907
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after
4666 // and potentially child frame views. 4683 // and potentially child frame views.
4667 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree); 4684 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree);
4668 4685
4669 FrameViewBase::setParentVisible(visible); 4686 FrameViewBase::setParentVisible(visible);
4670 4687
4671 if (!isSelfVisible()) 4688 if (!isSelfVisible())
4672 return; 4689 return;
4673 4690
4674 for (const auto& child : m_children) 4691 for (const auto& child : m_children)
4675 child->setParentVisible(visible); 4692 child->setParentVisible(visible);
4693
4694 for (const auto& plugin : m_plugins)
4695 plugin->setParentVisible(visible);
4676 } 4696 }
4677 4697
4678 void FrameView::show() { 4698 void FrameView::show() {
4679 if (!isSelfVisible()) { 4699 if (!isSelfVisible()) {
4680 setSelfVisible(true); 4700 setSelfVisible(true);
4681 if (ScrollingCoordinator* scrollingCoordinator = 4701 if (ScrollingCoordinator* scrollingCoordinator =
4682 this->scrollingCoordinator()) 4702 this->scrollingCoordinator())
4683 scrollingCoordinator->frameViewVisibilityDidChange(); 4703 scrollingCoordinator->frameViewVisibilityDidChange();
4684 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree); 4704 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree);
4685 updateParentScrollableAreaSet(); 4705 updateParentScrollableAreaSet();
4686 if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled() && 4706 if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled() &&
4687 !RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { 4707 !RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
4688 // The existance of scrolling properties depends on visibility through 4708 // The existance of scrolling properties depends on visibility through
4689 // isScrollable() so ensure properties are updated if visibility changes. 4709 // isScrollable() so ensure properties are updated if visibility changes.
4690 setNeedsPaintPropertyUpdate(); 4710 setNeedsPaintPropertyUpdate();
4691 } 4711 }
4692 if (isParentVisible()) { 4712 if (isParentVisible()) {
4693 for (const auto& child : m_children) 4713 for (const auto& child : m_children)
4694 child->setParentVisible(true); 4714 child->setParentVisible(true);
4715
4716 for (const auto& plugin : m_plugins)
4717 plugin->setParentVisible(true);
4695 } 4718 }
4696 } 4719 }
4697 4720
4698 FrameViewBase::show(); 4721 FrameViewBase::show();
4699 } 4722 }
4700 4723
4701 void FrameView::hide() { 4724 void FrameView::hide() {
4702 if (isSelfVisible()) { 4725 if (isSelfVisible()) {
4703 if (isParentVisible()) { 4726 if (isParentVisible()) {
4704 for (const auto& child : m_children) 4727 for (const auto& child : m_children)
4705 child->setParentVisible(false); 4728 child->setParentVisible(false);
4729
4730 for (const auto& plugin : m_plugins)
4731 plugin->setParentVisible(false);
4706 } 4732 }
4707 setSelfVisible(false); 4733 setSelfVisible(false);
4708 if (ScrollingCoordinator* scrollingCoordinator = 4734 if (ScrollingCoordinator* scrollingCoordinator =
4709 this->scrollingCoordinator()) 4735 this->scrollingCoordinator())
4710 scrollingCoordinator->frameViewVisibilityDidChange(); 4736 scrollingCoordinator->frameViewVisibilityDidChange();
4711 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree); 4737 setNeedsCompositingUpdate(layoutViewItem(), CompositingUpdateRebuildTree);
4712 updateParentScrollableAreaSet(); 4738 updateParentScrollableAreaSet();
4713 if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled() && 4739 if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled() &&
4714 !RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { 4740 !RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
4715 // The existance of scrolling properties depends on visibility through 4741 // The existance of scrolling properties depends on visibility through
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after
5265 void FrameView::setAnimationHost( 5291 void FrameView::setAnimationHost(
5266 std::unique_ptr<CompositorAnimationHost> host) { 5292 std::unique_ptr<CompositorAnimationHost> host) {
5267 m_animationHost = std::move(host); 5293 m_animationHost = std::move(host);
5268 } 5294 }
5269 5295
5270 LayoutUnit FrameView::caretWidth() const { 5296 LayoutUnit FrameView::caretWidth() const {
5271 return LayoutUnit(getHostWindow()->windowToViewportScalar(1)); 5297 return LayoutUnit(getHostWindow()->windowToViewportScalar(1));
5272 } 5298 }
5273 5299
5274 } // namespace blink 5300 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698