⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 175923 in webkit


Ignore:
Timestamp:
Nov 11, 2014, 7:22:58 AM (12 years ago)
Author:
Carlos Garcia Campos
Message:

Merge r175347 - 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):

Location:
releases/WebKitGTK/webkit-2.6/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • releases/WebKitGTK/webkit-2.6/Source/WebCore/ChangeLog

    r175922 r175923  
     12014-10-29  Alexey Proskuryakov  <ap@apple.com>
     2
     3        Notify Settings object when its Page object goes away.
     4        https://bugs.webkit.org/show_bug.cgi?id=138183
     5        rdar://problem/18786900
     6
     7        Reviewed by Andreas Kling.
     8
     9        I could not make a test for this issue.
     10
     11        * page/Page.cpp:
     12        (WebCore::Page::~Page):
     13        * page/Settings.cpp:
     14        (WebCore::setImageLoadingSettings):
     15        (WebCore::Settings::Settings):
     16        (WebCore::Settings::setTextAutosizingEnabled):
     17        (WebCore::Settings::setTextAutosizingWindowSizeOverride):
     18        (WebCore::Settings::setTextAutosizingFontScaleFactor):
     19        (WebCore::Settings::setMediaTypeOverride):
     20        (WebCore::Settings::setScriptEnabled):
     21        (WebCore::Settings::setUserStyleSheetLocation):
     22        (WebCore::Settings::setMinDOMTimerInterval):
     23        (WebCore::Settings::minDOMTimerInterval):
     24        (WebCore::Settings::domTimerAlignmentInterval):
     25        (WebCore::Settings::setUsesPageCache):
     26        (WebCore::Settings::setScreenFontSubstitutionEnabled):
     27        (WebCore::Settings::setFontRenderingMode):
     28        (WebCore::Settings::setDNSPrefetchingEnabled):
     29        (WebCore::Settings::setStorageBlockingPolicy):
     30        (WebCore::Settings::setBackgroundShouldExtendBeyondPage):
     31        (WebCore::Settings::setScrollingPerformanceLoggingEnabled):
     32        (WebCore::Settings::setHiddenPageDOMTimerThrottlingEnabled):
     33        (WebCore::Settings::setHiddenPageCSSAnimationSuspensionEnabled):
     34        (WebCore::Settings::setFontFallbackPrefersPictographs):
     35        * page/Settings.h:
     36        (WebCore::Settings::pageDestroyed):
     37
    1382014-10-29  Zalan Bujtas  <zalan@apple.com>
    239
  • releases/WebKitGTK/webkit-2.6/Source/WebCore/page/Page.cpp

    r174948 r175923  
    239239    allPages->remove(this);
    240240   
     241    m_settings->pageDestroyed();
     242
    241243    for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
    242244        frame->willDetachPage();
  • releases/WebKitGTK/webkit-2.6/Source/WebCore/page/Settings.cpp

    r173682 r175923  
    5454static void setImageLoadingSettings(Page* page)
    5555{
     56    if (!page)
     57        return;
     58
    5659    for (Frame* frame = &page->mainFrame(); frame; frame = frame->tree().traverseNext()) {
    5760        frame->document()->cachedResourceLoader()->setImagesEnabled(page->settings().areImagesEnabled());
     
    202205    AtomicString::init();
    203206    initializeDefaultFontFamilies();
    204     m_page = page; // Page is not yet fully initialized wen constructing Settings, so keeping m_page null over initializeDefaultFontFamilies() call.
     207    m_page = page; // Page is not yet fully initialized when constructing Settings, so keeping m_page null over initializeDefaultFontFamilies() call.
    205208}
    206209
     
    331334
    332335    m_textAutosizingEnabled = textAutosizingEnabled;
    333     m_page->setNeedsRecalcStyleInAllFrames();
     336    if (m_page)
     337        m_page->setNeedsRecalcStyleInAllFrames();
    334338}
    335339
     
    340344
    341345    m_textAutosizingWindowSizeOverride = textAutosizingWindowSizeOverride;
    342     m_page->setNeedsRecalcStyleInAllFrames();
     346    if (m_page)
     347        m_page->setNeedsRecalcStyleInAllFrames();
    343348}
    344349
     
    346351{
    347352    m_textAutosizingFontScaleFactor = fontScaleFactor;
     353
     354    if (!m_page)
     355        return;
    348356
    349357    // FIXME: I wonder if this needs to traverse frames like in WebViewImpl::resize, or whether there is only one document per Settings instance?
     
    362370
    363371    m_mediaTypeOverride = mediaTypeOverride;
     372
     373    if (!m_page)
     374        return;
    364375
    365376    FrameView* view = m_page->mainFrame().view();
     
    395406
    396407    m_isScriptEnabled = isScriptEnabled;
     408
     409    if (!m_page)
     410        return;
     411
    397412#if PLATFORM(IOS)
    398413    m_page->setNeedsRecalcStyleInAllFrames();
     
    435450    m_userStyleSheetLocation = userStyleSheetLocation;
    436451
    437     m_page->userStyleSheetLocationChanged();
     452    if (m_page)
     453        m_page->userStyleSheetLocationChanged();
    438454}
    439455
     
    457473void Settings::setMinDOMTimerInterval(double interval)
    458474{
    459     m_page->setMinimumTimerInterval(interval);
     475    if (m_page)
     476        m_page->setMinimumTimerInterval(interval);
    460477}
    461478
    462479double Settings::minDOMTimerInterval()
    463480{
     481    if (!m_page)
     482        return 0;
    464483    return m_page->minimumTimerInterval();
    465484}
     
    477496double Settings::domTimerAlignmentInterval() const
    478497{
     498    if (!m_page)
     499        return 0;
    479500    return m_page->timerAlignmentInterval();
    480501}
     
    493514       
    494515    m_usesPageCache = usesPageCache;
     516
     517    if (!m_page)
     518        return;
     519
    495520    if (!m_usesPageCache) {
    496521        int first = -m_page->backForward().backCount();
     
    506531        return;
    507532    m_screenFontSubstitutionEnabled = enabled;
    508     m_page->setNeedsRecalcStyleInAllFrames();
     533
     534    if (m_page)
     535        m_page->setNeedsRecalcStyleInAllFrames();
    509536}
    510537
     
    514541        return;
    515542    m_fontRenderingMode = mode;
    516     m_page->setNeedsRecalcStyleInAllFrames();
     543    if (m_page)
     544        m_page->setNeedsRecalcStyleInAllFrames();
    517545}
    518546
     
    535563
    536564    m_dnsPrefetchingEnabled = dnsPrefetchingEnabled;
    537     m_page->dnsPrefetchingStateChanged();
     565    if (m_page)
     566        m_page->dnsPrefetchingStateChanged();
    538567}
    539568
     
    559588
    560589    m_storageBlockingPolicy = enabled;
    561     m_page->storageBlockingStateChanged();
     590    if (m_page)
     591        m_page->storageBlockingStateChanged();
    562592}
    563593
     
    569599    m_backgroundShouldExtendBeyondPage = shouldExtend;
    570600
    571     m_page->mainFrame().view()->updateExtendBackgroundIfNecessary();
     601    if (m_page)
     602        m_page->mainFrame().view()->updateExtendBackgroundIfNecessary();
    572603}
    573604
     
    598629    m_scrollingPerformanceLoggingEnabled = enabled;
    599630
    600     if (m_page->mainFrame().view())
     631    if (m_page && m_page->mainFrame().view())
    601632        m_page->mainFrame().view()->setScrollingPerformanceLoggingEnabled(enabled);
    602633}
     
    640671        return;
    641672    m_hiddenPageDOMTimerThrottlingEnabled = flag;
    642     m_page->hiddenPageDOMTimerThrottlingStateChanged();
     673    if (m_page)
     674        m_page->hiddenPageDOMTimerThrottlingStateChanged();
    643675}
    644676#endif
     
    649681        return;
    650682    m_hiddenPageCSSAnimationSuspensionEnabled = flag;
    651     m_page->hiddenPageCSSAnimationSuspensionStateChanged();
     683    if (m_page)
     684        m_page->hiddenPageCSSAnimationSuspensionStateChanged();
    652685}
    653686
     
    658691
    659692    m_fontFallbackPrefersPictographs = preferPictographs;
    660     m_page->setNeedsRecalcStyleInAllFrames();
     693    if (m_page)
     694        m_page->setNeedsRecalcStyleInAllFrames();
    661695}
    662696
  • releases/WebKitGTK/webkit-2.6/Source/WebCore/page/Settings.h

    r173176 r175923  
    6767    ~Settings();
    6868
     69    void pageDestroyed() { m_page = nullptr; }
     70
    6971    WEBCORE_EXPORT void setStandardFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
    7072    WEBCORE_EXPORT const AtomicString& standardFontFamily(UScriptCode = USCRIPT_COMMON) const;
Note: See TracChangeset for help on using the changeset viewer.