void PageGroup::removeUserStyleSheetFromWorld(DOMWrapperWorld* world, const KURL& url) { ASSERT_ARG(world, world); if (!m_userStyleSheets) return; UserStyleSheetMap::iterator it = m_userStyleSheets->find(world); bool sheetsChanged = false; if (it == m_userStyleSheets->end()) return; UserStyleSheetVector* stylesheets = it->value.get(); for (int i = stylesheets->size() - 1; i >= 0; --i) { if (stylesheets->at(i)->url() == url) { stylesheets->remove(i); sheetsChanged = true; } } if (!sheetsChanged) return; if (stylesheets->isEmpty()) m_userStyleSheets->remove(it); invalidatedInjectedStyleSheetCacheInAllFrames(); }
void PageGroup::removeUserStyleSheetFromWorld(DOMWrapperWorld* world, const KURL& url) { ASSERT_ARG(world, world); if (!m_userStyleSheets) return; UserStyleSheetMap::iterator it = m_userStyleSheets->find(world); bool sheetsChanged = false; if (it == m_userStyleSheets->end()) return; UserStyleSheetVector* stylesheets = it->second; for (int i = stylesheets->size() - 1; i >= 0; --i) { if (stylesheets->at(i)->url() == url) { stylesheets->remove(i); sheetsChanged = true; } } if (!sheetsChanged) return; if (!stylesheets->isEmpty()) { delete it->second; m_userStyleSheets->remove(it); } // Clear our cached sheets and have them just reparse. HashSet<Page*>::const_iterator end = m_pages.end(); for (HashSet<Page*>::const_iterator it = m_pages.begin(); it != end; ++it) { for (Frame* frame = (*it)->mainFrame(); frame; frame = frame->tree()->traverseNext()) frame->document()->clearPageGroupUserSheets(); } }