summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-06-29 20:22:24 +0200
committerLiang Qi <liang.qi@theqtcompany.com>2015-06-29 20:22:24 +0200
commitb0aba679de5a699ec35c569971fae9d6afa684d3 (patch)
tree2428e08c9f88a07264a4969cba1c2234b6343c6f
parent6aa5a2787dbdeb275beab75e2de660c422ad51fb (diff)
parent30dd24ef89999833eb58b0a930b03377a5a5458c (diff)
downloadqtwebkit-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.cpp37
-rw-r--r--Source/WebCore/page/FrameView.h2
-rw-r--r--Source/WebCore/plugins/qt/PluginPackageQt.cpp3
-rw-r--r--dist/changes-5.5.053
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.