Modified: branches/safari-600.1.4.13-branch/Source/WebCore/ChangeLog (177069 => 177070)
--- branches/safari-600.1.4.13-branch/Source/WebCore/ChangeLog 2014-12-10 17:06:52 UTC (rev 177069)
+++ branches/safari-600.1.4.13-branch/Source/WebCore/ChangeLog 2014-12-10 17:08:40 UTC (rev 177070)
@@ -1,5 +1,46 @@
2014-12-10 Babak Shafiei <[email protected]>
+ Merge r175347.
+
+ 2014-10-29 Alexey Proskuryakov <[email protected]>
+
+ Notify Settings object when its Page object goes away.
+ https://bugs.webkit.org/show_bug.cgi?id=138183
+ rdar://problem/18786900
+
+ Reviewed by Andreas Kling.
+
+ I could not make a test for this issue.
+
+ * page/Page.cpp:
+ (WebCore::Page::~Page):
+ * page/Settings.cpp:
+ (WebCore::setImageLoadingSettings):
+ (WebCore::Settings::Settings):
+ (WebCore::Settings::setTextAutosizingEnabled):
+ (WebCore::Settings::setTextAutosizingWindowSizeOverride):
+ (WebCore::Settings::setTextAutosizingFontScaleFactor):
+ (WebCore::Settings::setMediaTypeOverride):
+ (WebCore::Settings::setScriptEnabled):
+ (WebCore::Settings::setUserStyleSheetLocation):
+ (WebCore::Settings::setMinDOMTimerInterval):
+ (WebCore::Settings::minDOMTimerInterval):
+ (WebCore::Settings::domTimerAlignmentInterval):
+ (WebCore::Settings::setUsesPageCache):
+ (WebCore::Settings::setScreenFontSubstitutionEnabled):
+ (WebCore::Settings::setFontRenderingMode):
+ (WebCore::Settings::setDNSPrefetchingEnabled):
+ (WebCore::Settings::setStorageBlockingPolicy):
+ (WebCore::Settings::setBackgroundShouldExtendBeyondPage):
+ (WebCore::Settings::setScrollingPerformanceLoggingEnabled):
+ (WebCore::Settings::setHiddenPageDOMTimerThrottlingEnabled):
+ (WebCore::Settings::setHiddenPageCSSAnimationSuspensionEnabled):
+ (WebCore::Settings::setFontFallbackPrefersPictographs):
+ * page/Settings.h:
+ (WebCore::Settings::pageDestroyed):
+
+2014-12-10 Babak Shafiei <[email protected]>
+
Merge r175345.
2014-10-29 Zalan Bujtas <[email protected]>
Modified: branches/safari-600.1.4.13-branch/Source/WebCore/page/Page.cpp (177069 => 177070)
--- branches/safari-600.1.4.13-branch/Source/WebCore/page/Page.cpp 2014-12-10 17:06:52 UTC (rev 177069)
+++ branches/safari-600.1.4.13-branch/Source/WebCore/page/Page.cpp 2014-12-10 17:08:40 UTC (rev 177070)
@@ -237,6 +237,8 @@
setGroupName(String());
allPages->remove(this);
+ m_settings->pageDestroyed();
+
for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
frame->willDetachPage();
frame->detachFromPage();
Modified: branches/safari-600.1.4.13-branch/Source/WebCore/page/Settings.cpp (177069 => 177070)
--- branches/safari-600.1.4.13-branch/Source/WebCore/page/Settings.cpp 2014-12-10 17:06:52 UTC (rev 177069)
+++ branches/safari-600.1.4.13-branch/Source/WebCore/page/Settings.cpp 2014-12-10 17:08:40 UTC (rev 177070)
@@ -53,6 +53,9 @@
static void setImageLoadingSettings(Page* page)
{
+ if (!page)
+ return;
+
for (Frame* frame = &page->mainFrame(); frame; frame = frame->tree().traverseNext()) {
frame->document()->cachedResourceLoader()->setImagesEnabled(page->settings().areImagesEnabled());
frame->document()->cachedResourceLoader()->setAutoLoadImages(page->settings().loadsImagesAutomatically());
@@ -197,7 +200,7 @@
// hash before trying to use it.
AtomicString::init();
initializeDefaultFontFamilies();
- m_page = page; // Page is not yet fully initialized wen constructing Settings, so keeping m_page null over initializeDefaultFontFamilies() call.
+ m_page = page; // Page is not yet fully initialized when constructing Settings, so keeping m_page null over initializeDefaultFontFamilies() call.
}
Settings::~Settings()
@@ -326,7 +329,8 @@
return;
m_textAutosizingEnabled = textAutosizingEnabled;
- m_page->setNeedsRecalcStyleInAllFrames();
+ if (m_page)
+ m_page->setNeedsRecalcStyleInAllFrames();
}
void Settings::setTextAutosizingWindowSizeOverride(const IntSize& textAutosizingWindowSizeOverride)
@@ -335,13 +339,17 @@
return;
m_textAutosizingWindowSizeOverride = textAutosizingWindowSizeOverride;
- m_page->setNeedsRecalcStyleInAllFrames();
+ if (m_page)
+ m_page->setNeedsRecalcStyleInAllFrames();
}
void Settings::setTextAutosizingFontScaleFactor(float fontScaleFactor)
{
m_textAutosizingFontScaleFactor = fontScaleFactor;
+ if (!m_page)
+ return;
+
// FIXME: I wonder if this needs to traverse frames like in WebViewImpl::resize, or whether there is only one document per Settings instance?
for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree().traverseNext())
frame->document()->textAutosizer()->recalculateMultipliers();
@@ -358,6 +366,9 @@
m_mediaTypeOverride = mediaTypeOverride;
+ if (!m_page)
+ return;
+
FrameView* view = m_page->mainFrame().view();
ASSERT(view);
@@ -390,6 +401,10 @@
return;
m_isScriptEnabled = isScriptEnabled;
+
+ if (!m_page)
+ return;
+
#if PLATFORM(IOS)
m_page->setNeedsRecalcStyleInAllFrames();
#endif
@@ -430,7 +445,8 @@
m_userStyleSheetLocation = userStyleSheetLocation;
- m_page->userStyleSheetLocationChanged();
+ if (m_page)
+ m_page->userStyleSheetLocationChanged();
}
// FIXME: This quirk is needed because of Radar 4674537 and 5211271. We need to phase it out once Adobe
@@ -452,11 +468,14 @@
void Settings::setMinDOMTimerInterval(double interval)
{
- m_page->setMinimumTimerInterval(interval);
+ if (m_page)
+ m_page->setMinimumTimerInterval(interval);
}
double Settings::minDOMTimerInterval()
{
+ if (!m_page)
+ return 0;
return m_page->minimumTimerInterval();
}
@@ -472,6 +491,8 @@
double Settings::domTimerAlignmentInterval() const
{
+ if (!m_page)
+ return 0;
return m_page->timerAlignmentInterval();
}
@@ -488,6 +509,10 @@
return;
m_usesPageCache = usesPageCache;
+
+ if (!m_page)
+ return;
+
if (!m_usesPageCache) {
int first = -m_page->backForward().backCount();
int last = m_page->backForward().forwardCount();
@@ -501,7 +526,9 @@
if (m_screenFontSubstitutionEnabled == enabled)
return;
m_screenFontSubstitutionEnabled = enabled;
- m_page->setNeedsRecalcStyleInAllFrames();
+
+ if (m_page)
+ m_page->setNeedsRecalcStyleInAllFrames();
}
void Settings::setFontRenderingMode(FontRenderingMode mode)
@@ -509,7 +536,8 @@
if (fontRenderingMode() == mode)
return;
m_fontRenderingMode = mode;
- m_page->setNeedsRecalcStyleInAllFrames();
+ if (m_page)
+ m_page->setNeedsRecalcStyleInAllFrames();
}
FontRenderingMode Settings::fontRenderingMode() const
@@ -530,7 +558,8 @@
return;
m_dnsPrefetchingEnabled = dnsPrefetchingEnabled;
- m_page->dnsPrefetchingStateChanged();
+ if (m_page)
+ m_page->dnsPrefetchingStateChanged();
}
void Settings::setShowTiledScrollingIndicator(bool enabled)
@@ -554,7 +583,8 @@
return;
m_storageBlockingPolicy = enabled;
- m_page->storageBlockingStateChanged();
+ if (m_page)
+ m_page->storageBlockingStateChanged();
}
void Settings::setBackgroundShouldExtendBeyondPage(bool shouldExtend)
@@ -564,7 +594,8 @@
m_backgroundShouldExtendBeyondPage = shouldExtend;
- m_page->mainFrame().view()->updateExtendBackgroundIfNecessary();
+ if (m_page)
+ m_page->mainFrame().view()->updateExtendBackgroundIfNecessary();
}
#if USE(AVFOUNDATION)
@@ -593,7 +624,7 @@
{
m_scrollingPerformanceLoggingEnabled = enabled;
- if (m_page->mainFrame().view())
+ if (m_page && m_page->mainFrame().view())
m_page->mainFrame().view()->setScrollingPerformanceLoggingEnabled(enabled);
}
@@ -635,7 +666,8 @@
if (m_hiddenPageDOMTimerThrottlingEnabled == flag)
return;
m_hiddenPageDOMTimerThrottlingEnabled = flag;
- m_page->hiddenPageDOMTimerThrottlingStateChanged();
+ if (m_page)
+ m_page->hiddenPageDOMTimerThrottlingStateChanged();
}
#endif
@@ -644,7 +676,8 @@
if (m_hiddenPageCSSAnimationSuspensionEnabled == flag)
return;
m_hiddenPageCSSAnimationSuspensionEnabled = flag;
- m_page->hiddenPageCSSAnimationSuspensionStateChanged();
+ if (m_page)
+ m_page->hiddenPageCSSAnimationSuspensionStateChanged();
}
void Settings::setFontFallbackPrefersPictographs(bool preferPictographs)
@@ -653,7 +686,8 @@
return;
m_fontFallbackPrefersPictographs = preferPictographs;
- m_page->setNeedsRecalcStyleInAllFrames();
+ if (m_page)
+ m_page->setNeedsRecalcStyleInAllFrames();
}
void Settings::setLowPowerVideoAudioBufferSizeEnabled(bool flag)
Modified: branches/safari-600.1.4.13-branch/Source/WebCore/page/Settings.h (177069 => 177070)
--- branches/safari-600.1.4.13-branch/Source/WebCore/page/Settings.h 2014-12-10 17:06:52 UTC (rev 177069)
+++ branches/safari-600.1.4.13-branch/Source/WebCore/page/Settings.h 2014-12-10 17:08:40 UTC (rev 177070)
@@ -66,6 +66,8 @@
static PassRefPtr<Settings> create(Page*);
~Settings();
+ void pageDestroyed() { m_page = nullptr; }
+
void setStandardFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
const AtomicString& standardFontFamily(UScriptCode = USCRIPT_COMMON) const;