Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog (197733 => 197734)
--- releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog 2016-03-08 07:18:17 UTC (rev 197733)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog 2016-03-08 07:58:07 UTC (rev 197734)
@@ -1,3 +1,32 @@
+2016-03-01 Andreas Kling <[email protected]>
+
+ REGRESSION (r154616): Accelerated drawing is off during the initial load
+ <https://webkit.org/b/123812>
+
+ Reviewed by Tim Horton.
+
+ Robustify the hey-the-Settings-changed callbacks in Page to handle document-less frames.
+ This is needed because now Settings are changed even before the main Frame has a Document.
+
+ * page/Page.cpp:
+ (WebCore::networkStateChanged):
+ (WebCore::Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment):
+ (WebCore::Page::takeAnyMediaCanStartListener):
+ (WebCore::Page::setMediaVolume):
+ (WebCore::Page::setPageScaleFactor):
+ (WebCore::Page::invalidateStylesForAllLinks):
+ (WebCore::Page::invalidateStylesForLink):
+ (WebCore::Page::dnsPrefetchingStateChanged):
+ (WebCore::Page::storageBlockingStateChanged):
+ (WebCore::Page::setMuted):
+ (WebCore::Page::captionPreferencesChanged):
+ (WebCore::Page::setSessionID):
+ (WebCore::Page::setPlaybackTarget):
+ (WebCore::Page::playbackTargetAvailabilityDidChange):
+ (WebCore::Page::setShouldPlayToPlaybackTarget):
+ * page/Settings.cpp:
+ (WebCore::setImageLoadingSettings):
+
2016-03-01 Brady Eidson <[email protected]>
Modern IDB: Possible crash deallocating IDBDatabaseInfo/IDBObjectStoreInfo/IDBIndexInfo.
Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/page/Page.cpp (197733 => 197734)
--- releases/WebKitGTK/webkit-2.12/Source/WebCore/page/Page.cpp 2016-03-08 07:18:17 UTC (rev 197733)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/page/Page.cpp 2016-03-08 07:58:07 UTC (rev 197734)
@@ -146,8 +146,11 @@
}
AtomicString eventName = isOnLine ? eventNames().onlineEvent : eventNames().offlineEvent;
- for (auto& frame : frames)
+ for (auto& frame : frames) {
+ if (!frame->document())
+ continue;
frame->document()->dispatchWindowEvent(Event::create(eventName, false, false));
+ }
}
static const ViewState::Flags PageInitialViewState = ViewState::IsVisible | ViewState::IsInWindow;
@@ -484,6 +487,8 @@
// If a change in the global environment has occurred, we need to
// make sure all the properties a recomputed, therefore we invalidate
// the properties cache.
+ if (!frame->document())
+ continue;
if (StyleResolver* styleResolver = frame->document()->styleResolverIfExists())
styleResolver->invalidateMatchedPropertiesCache();
frame->document()->scheduleForcedStyleRecalc();
@@ -547,6 +552,8 @@
inline MediaCanStartListener* Page::takeAnyMediaCanStartListener()
{
for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
if (MediaCanStartListener* listener = frame->document()->takeAnyMediaCanStartListener())
return listener;
}
@@ -769,6 +776,8 @@
m_mediaVolume = volume;
for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->mediaVolumeDidChange();
}
}
@@ -801,8 +810,11 @@
}
#if ENABLE(MEDIA_CONTROLS_SCRIPT)
if (inStableState) {
- for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->pageScaleFactorChangedAndStable();
+ }
}
#endif
return;
@@ -839,8 +851,11 @@
#if ENABLE(MEDIA_CONTROLS_SCRIPT)
if (inStableState) {
- for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->pageScaleFactorChangedAndStable();
+ }
}
#else
UNUSED_PARAM(inStableState);
@@ -1099,14 +1114,20 @@
void Page::invalidateStylesForAllLinks()
{
- for (Frame* frame = m_mainFrame.get(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = m_mainFrame.get(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->visitedLinkState().invalidateStyleForAllLinks();
+ }
}
void Page::invalidateStylesForLink(LinkHash linkHash)
{
- for (Frame* frame = m_mainFrame.get(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = m_mainFrame.get(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->visitedLinkState().invalidateStyleForLink(linkHash);
+ }
}
void Page::setDebugger(JSC::Debugger* debugger)
@@ -1188,8 +1209,11 @@
void Page::dnsPrefetchingStateChanged()
{
- for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->initDNSPrefetch();
+ }
}
Vector<Ref<PluginViewBase>> Page::pluginViews()
@@ -1212,8 +1236,11 @@
void Page::storageBlockingStateChanged()
{
- for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->storageBlockingStateDidChange();
+ }
// Collect the PluginViews in to a vector to ensure that action the plug-in takes
// from below storageBlockingStateChanged does not affect their lifetime.
@@ -1252,8 +1279,11 @@
m_muted = muted;
- for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->pageMutedStateDidChange();
+ }
}
#if ENABLE(MEDIA_SESSION)
@@ -1681,8 +1711,11 @@
#if ENABLE(VIDEO_TRACK)
void Page::captionPreferencesChanged()
{
- for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->captionPreferencesChanged();
+ }
}
#endif
@@ -1764,8 +1797,11 @@
if (!privateBrowsingStateChanged)
return;
- for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->privateBrowsingStateDidChange();
+ }
// Collect the PluginViews in to a vector to ensure that action the plug-in takes
// from below privateBrowsingStateChanged does not affect their lifetime.
@@ -1814,20 +1850,29 @@
void Page::setPlaybackTarget(uint64_t contextId, Ref<MediaPlaybackTarget>&& target)
{
- for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->setPlaybackTarget(contextId, target.copyRef());
+ }
}
void Page::playbackTargetAvailabilityDidChange(uint64_t contextId, bool available)
{
- for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->playbackTargetAvailabilityDidChange(contextId, available);
+ }
}
void Page::setShouldPlayToPlaybackTarget(uint64_t clientId, bool shouldPlay)
{
- for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext())
+ for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->setShouldPlayToPlaybackTarget(clientId, shouldPlay);
+ }
}
#endif
Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/page/Settings.cpp (197733 => 197734)
--- releases/WebKitGTK/webkit-2.12/Source/WebCore/page/Settings.cpp 2016-03-08 07:18:17 UTC (rev 197733)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/page/Settings.cpp 2016-03-08 07:58:07 UTC (rev 197734)
@@ -61,6 +61,8 @@
return;
for (Frame* frame = &page->mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->document())
+ continue;
frame->document()->cachedResourceLoader().setImagesEnabled(page->settings().areImagesEnabled());
frame->document()->cachedResourceLoader().setAutoLoadImages(page->settings().loadsImagesAutomatically());
}
Modified: releases/WebKitGTK/webkit-2.12/Source/WebKit2/ChangeLog (197733 => 197734)
--- releases/WebKitGTK/webkit-2.12/Source/WebKit2/ChangeLog 2016-03-08 07:18:17 UTC (rev 197733)
+++ releases/WebKitGTK/webkit-2.12/Source/WebKit2/ChangeLog 2016-03-08 07:58:07 UTC (rev 197734)
@@ -1,3 +1,16 @@
+2016-03-01 Andreas Kling <[email protected]>
+
+ REGRESSION (r154616): Accelerated drawing is off during the initial load
+ <https://webkit.org/b/123812>
+
+ Reviewed by Tim Horton.
+
+ Load preferences before instantiating the first DrawingArea. This ensures that we do the
+ initial paint using accelerated drawing, and avoids allocating persistent data structures
+ only needed by the software rendering path.
+
+ * WebProcess/WebPage/WebPage.cpp:
+
2016-03-01 Carlos Garcia Campos <[email protected]>
NetworkCache: Web process leaks resource buffer when using shareable reasources
Modified: releases/WebKitGTK/webkit-2.12/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (197733 => 197734)
--- releases/WebKitGTK/webkit-2.12/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2016-03-08 07:18:17 UTC (rev 197733)
+++ releases/WebKitGTK/webkit-2.12/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2016-03-08 07:58:07 UTC (rev 197734)
@@ -402,6 +402,7 @@
#endif
m_page = std::make_unique<Page>(pageConfiguration);
+ updatePreferences(parameters.store);
m_drawingArea = DrawingArea::create(*this, parameters);
m_drawingArea->setPaintingEnabled(false);
@@ -449,7 +450,6 @@
m_page->setTextAutosizingWidth(parameters.textAutosizingWidth);
#endif
- updatePreferences(parameters.store);
platformInitialize();
setUseFixedLayout(parameters.useFixedLayout);