Changeset 63243 in webkit


Ignore:
Timestamp:
Jul 13, 2010 1:31:33 PM (14 years ago)
Author:
aa@chromium.org
Message:

2010-07-13 Aaron Boodman <aa@chromium.org>

Reviewed by Timothy Hatcher.

Don't reset per-document user style caches when user styles are updated in
Chromium.

https://bugs.webkit.org/show_bug.cgi?id=42003

  • page/PageGroup.cpp: (WebCore::PageGroup::addUserStyleSheetToWorld): (WebCore::PageGroup::removeUserStyleSheetFromWorld): (WebCore::PageGroup::removeUserStyleSheetsFromWorld): (WebCore::PageGroup::removeAllUserContent): (WebCore::PageGroup::resetUserStyleCacheInAllFrames):
  • page/PageGroup.h:
Location:
trunk/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r63239 r63243  
     12010-07-13  Aaron Boodman  <aa@chromium.org>
     2
     3        Reviewed by Timothy Hatcher.
     4
     5        Don't reset per-document user style caches when user styles are updated in
     6        Chromium.
     7
     8        https://bugs.webkit.org/show_bug.cgi?id=42003
     9
     10        * page/PageGroup.cpp:
     11        (WebCore::PageGroup::addUserStyleSheetToWorld):
     12        (WebCore::PageGroup::removeUserStyleSheetFromWorld):
     13        (WebCore::PageGroup::removeUserStyleSheetsFromWorld):
     14        (WebCore::PageGroup::removeAllUserContent):
     15        (WebCore::PageGroup::resetUserStyleCacheInAllFrames):
     16        * page/PageGroup.h:
     17
    1182010-07-13  Eric Carlson  <eric.carlson@apple.com>
    219
  • trunk/WebCore/page/PageGroup.cpp

    r62876 r63243  
    243243    styleSheetsInWorld->append(userStyleSheet.release());
    244244
    245     // Clear our cached sheets and have them just reparse.
    246     HashSet<Page*>::const_iterator end = m_pages.end();
    247     for (HashSet<Page*>::const_iterator it = m_pages.begin(); it != end; ++it) {
    248         for (Frame* frame = (*it)->mainFrame(); frame; frame = frame->tree()->traverseNext())
    249             frame->document()->clearPageGroupUserSheets();
    250     }
     245    resetUserStyleCacheInAllFrames();
    251246}
    252247
     
    302297        m_userStyleSheets->remove(it);
    303298    }
    304    
     299
     300    resetUserStyleCacheInAllFrames();
     301}
     302
     303void PageGroup::removeUserScriptsFromWorld(DOMWrapperWorld* world)
     304{
     305    ASSERT_ARG(world, world);
     306
     307    if (!m_userScripts)
     308        return;
     309
     310    UserScriptMap::iterator it = m_userScripts->find(world);
     311    if (it == m_userScripts->end())
     312        return;
     313       
     314    delete it->second;
     315    m_userScripts->remove(it);
     316}
     317
     318void PageGroup::removeUserStyleSheetsFromWorld(DOMWrapperWorld* world)
     319{
     320    ASSERT_ARG(world, world);
     321
     322    if (!m_userStyleSheets)
     323        return;
     324   
     325    UserStyleSheetMap::iterator it = m_userStyleSheets->find(world);
     326    if (it == m_userStyleSheets->end())
     327        return;
     328   
     329    delete it->second;
     330    m_userStyleSheets->remove(it);
     331
     332    resetUserStyleCacheInAllFrames();
     333}
     334
     335void PageGroup::removeAllUserContent()
     336{
     337    if (m_userScripts) {
     338        deleteAllValues(*m_userScripts);
     339        m_userScripts.clear();
     340    }
     341
     342    if (m_userStyleSheets) {
     343        deleteAllValues(*m_userStyleSheets);
     344        m_userStyleSheets.clear();
     345        resetUserStyleCacheInAllFrames();
     346    }
     347}
     348
     349void PageGroup::resetUserStyleCacheInAllFrames()
     350{
     351#if !PLATFORM(CHROMIUM)
    305352    // Clear our cached sheets and have them just reparse.
    306353    HashSet<Page*>::const_iterator end = m_pages.end();
     
    309356            frame->document()->clearPageGroupUserSheets();
    310357    }
    311 }
    312 
    313 void PageGroup::removeUserScriptsFromWorld(DOMWrapperWorld* world)
    314 {
    315     ASSERT_ARG(world, world);
    316 
    317     if (!m_userScripts)
    318         return;
    319 
    320     UserScriptMap::iterator it = m_userScripts->find(world);
    321     if (it == m_userScripts->end())
    322         return;
    323        
    324     delete it->second;
    325     m_userScripts->remove(it);
    326 }
    327 
    328 void PageGroup::removeUserStyleSheetsFromWorld(DOMWrapperWorld* world)
    329 {
    330     ASSERT_ARG(world, world);
    331 
    332     if (!m_userStyleSheets)
    333         return;
    334    
    335     UserStyleSheetMap::iterator it = m_userStyleSheets->find(world);
    336     if (it == m_userStyleSheets->end())
    337         return;
    338    
    339     delete it->second;
    340     m_userStyleSheets->remove(it);
    341 
    342     // Clear our cached sheets and have them just reparse.
    343     HashSet<Page*>::const_iterator end = m_pages.end();
    344     for (HashSet<Page*>::const_iterator it = m_pages.begin(); it != end; ++it) {
    345         for (Frame* frame = (*it)->mainFrame(); frame; frame = frame->tree()->traverseNext())
    346             frame->document()->clearPageGroupUserSheets();
    347     }
    348 }
    349 
    350 void PageGroup::removeAllUserContent()
    351 {
    352     if (m_userScripts) {
    353         deleteAllValues(*m_userScripts);
    354         m_userScripts.clear();
    355     }
    356    
    357    
    358     if (m_userStyleSheets) {
    359         deleteAllValues(*m_userStyleSheets);
    360         m_userStyleSheets.clear();
    361     }
     358#endif
    362359}
    363360
  • trunk/WebCore/page/PageGroup.h

    r62876 r63243  
    9595    private:
    9696        void addVisitedLink(LinkHash stringHash);
    97 
     97        void resetUserStyleCacheInAllFrames();
     98 
    9899        String m_name;
    99100
Note: See TracChangeset for help on using the changeset viewer.