diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-06-29 20:22:24 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-06-29 20:22:24 +0200 |
commit | b0aba679de5a699ec35c569971fae9d6afa684d3 (patch) | |
tree | 2428e08c9f88a07264a4969cba1c2234b6343c6f | |
parent | 6aa5a2787dbdeb275beab75e2de660c422ad51fb (diff) | |
parent | 30dd24ef89999833eb58b0a930b03377a5a5458c (diff) | |
download | qtwebkit-b0aba679de5a699ec35c569971fae9d6afa684d3.tar.gz |
Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
.qmake.conf
Change-Id: I99ef18468035cfb494db0c84f003daed8cbaa99d
-rw-r--r-- | Source/WebCore/page/FrameView.cpp | 37 | ||||
-rw-r--r-- | Source/WebCore/page/FrameView.h | 2 | ||||
-rw-r--r-- | Source/WebCore/plugins/qt/PluginPackageQt.cpp | 3 | ||||
-rw-r--r-- | dist/changes-5.5.0 | 53 |
4 files changed, 88 insertions, 7 deletions
diff --git a/Source/WebCore/page/FrameView.cpp b/Source/WebCore/page/FrameView.cpp index 56698c73b..abf82bc64 100644 --- a/Source/WebCore/page/FrameView.cpp +++ b/Source/WebCore/page/FrameView.cpp @@ -925,7 +925,7 @@ bool FrameView::flushCompositingStateForThisFrame(Frame* rootFrameForFlush) // If we sync compositing layers when a layout is pending, we may cause painting of compositing // layer content to occur before layout has happened, which will cause paintContents() to bail. - if (needsLayout()) + if (needsStyleRecalcOrLayout()) return false; // If we sync compositing layers and allow the repaint to be deferred, there is time for a @@ -1088,7 +1088,7 @@ RenderObject* FrameView::layoutRoot(bool onlyDuringLayout) const return onlyDuringLayout && layoutPending() ? 0 : m_layoutRoot; } -static inline void collectFrameViewChildren(FrameView* frameView, Vector<RefPtr<FrameView> >& frameViews) +static inline void collectFrameViewChildren(const FrameView* frameView, Vector<RefPtr<FrameView> >& frameViews) { const HashSet<RefPtr<Widget> >* viewChildren = frameView->children(); ASSERT(viewChildren); @@ -2534,6 +2534,29 @@ bool FrameView::layoutPending() const return m_layoutTimer.isActive(); } +bool FrameView::needsStyleRecalcOrLayout(bool includeSubframes) const +{ + if (frame()->document() && frame()->document()->childNeedsStyleRecalc()) + return true; + + if (needsLayout()) + return true; + + if (!includeSubframes) + return false; + + // Find child frames via the Widget tree, as updateLayoutAndStyleIfNeededRecursive() does. + Vector<RefPtr<FrameView> > childViews; + collectFrameViewChildren(this, childViews); + + for (unsigned i = 0; i < childViews.size(); ++i) { + if (childViews[i]->needsStyleRecalcOrLayout()) + return true; + } + + return false; +} + bool FrameView::needsLayout() const { // This can return true in cases where the document does not have a body yet. @@ -3772,10 +3795,12 @@ void FrameView::updateLayoutAndStyleIfNeededRecursive() // painting, so we need to flush out any deferred repaints too. flushDeferredRepaints(); - // When frame flattening is on, child frame can mark parent frame dirty. In such case, child frame - // needs to call layout on parent frame recursively. - // This assert ensures that parent frames are clean, when child frames finished updating layout and style. - ASSERT(!needsLayout()); + // A child frame may have dirtied us during its layout. + frame()->document()->updateStyleIfNeeded(); + if (needsLayout()) + layout(); + + ASSERT(!(m_frame->page() && m_frame->page()->mainFrame() == m_frame) || !needsStyleRecalcOrLayout()); } bool FrameView::qualifiesAsVisuallyNonEmpty() const diff --git a/Source/WebCore/page/FrameView.h b/Source/WebCore/page/FrameView.h index 24f0c2a27..b955e0964 100644 --- a/Source/WebCore/page/FrameView.h +++ b/Source/WebCore/page/FrameView.h @@ -115,6 +115,8 @@ public: void setNeedsLayout(); void setViewportConstrainedObjectsNeedLayout(); + bool needsStyleRecalcOrLayout(bool includeSubframes = true) const; + bool needsFullRepaint() const { return m_doFullRepaint; } #if ENABLE(REQUEST_ANIMATION_FRAME) diff --git a/Source/WebCore/plugins/qt/PluginPackageQt.cpp b/Source/WebCore/plugins/qt/PluginPackageQt.cpp index b86ab9f66..a923d49aa 100644 --- a/Source/WebCore/plugins/qt/PluginPackageQt.cpp +++ b/Source/WebCore/plugins/qt/PluginPackageQt.cpp @@ -152,7 +152,8 @@ bool PluginPackage::isPluginBlacklisted() // subplugins linked against Qt 4 but without using DEEPBIND. const QLatin1String pluginBlacklist[] = { QLatin1String("skypebuttons"), - QLatin1String("libkpartsplugin") + QLatin1String("libkpartsplugin"), + QLatin1String("libvlcplugin") }; QString baseName = QFileInfo(static_cast<QString>(m_path)).baseName(); diff --git a/dist/changes-5.5.0 b/dist/changes-5.5.0 new file mode 100644 index 000000000..0fdb7f68d --- /dev/null +++ b/dist/changes-5.5.0 @@ -0,0 +1,53 @@ +Qt 5.5 introduces many new features and improvements as well as bugfixes +over the 5.4.x series. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + + http://doc.qt.io/qt-5.5 + +The Qt version 5.5 series is binary compatible with the 5.4.x series. +Applications compiled for 5.4 will continue to run with 5.5. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + + http://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Important * +**************************************************************************** + +- QtWebKit is now deprecated. It will continue to be supported in Qt 5, but +it is recommended new projects switch to the QtWebEngine APIs. + + +**************************************************************************** +* Library * +**************************************************************************** + +QtWebkit +-------- + - [QTBUG-45556] Fixed case where local pages could request remote content + when remote access was disabled. + - Support for more font-weight using new weight in QFont. + - [QTBUG-43628] Support authentication of POST requests. + + +**************************************************************************** +* Platform Specific Changes * +**************************************************************************** + +Windows +------- + - [QTBUG-46344] Support building with MSVC 2015 + +Linux +------- + - NS plugins are now linking using RTLD_DEEPBIND, making it possible to + load plugins using conflicting symbols such as Qt4 libraries. + - Plugins loading Qt4-using plugins of their own without using deepbind + are blacklisted. |