Title: [177070] branches/safari-600.1.4.13-branch/Source/WebCore

Diff

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;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to