void Page::settingsChanged(SettingsDelegate::ChangeType changeType) { switch (changeType) { case SettingsDelegate::StyleChange: setNeedsRecalcStyleInAllFrames(); break; case SettingsDelegate::ViewportDescriptionChange: if (mainFrame()) mainFrame()->document()->updateViewportDescription(); break; case SettingsDelegate::MediaTypeChange: m_mainFrame->view()->setMediaType(AtomicString(settings().mediaTypeOverride())); setNeedsRecalcStyleInAllFrames(); break; case SettingsDelegate::DNSPrefetchingChange: for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()) frame->document()->initDNSPrefetch(); break; case SettingsDelegate::MultisamplingChange: { HashSet<MultisamplingChangedObserver*>::iterator stop = m_multisamplingChangedObservers.end(); for (HashSet<MultisamplingChangedObserver*>::iterator it = m_multisamplingChangedObservers.begin(); it != stop; ++it) (*it)->multisamplingChanged(m_settings->openGLMultisamplingEnabled()); break; } case SettingsDelegate::ImageLoadingChange: for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()) { frame->document()->fetcher()->setImagesEnabled(settings().imagesEnabled()); frame->document()->fetcher()->setAutoLoadImages(settings().loadsImagesAutomatically()); } break; case SettingsDelegate::TextAutosizingChange: // FTA needs both setNeedsRecalcStyle and setNeedsLayout after a setting change. if (RuntimeEnabledFeatures::fastTextAutosizingEnabled()) { setNeedsRecalcStyleInAllFrames(); } else { // 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 = mainFrame(); frame; frame = frame->tree().traverseNext()) { TextAutosizer* textAutosizer = frame->document()->textAutosizer(); if (textAutosizer) textAutosizer->recalculateMultipliers(); } } // TextAutosizing updates RenderStyle during layout phase (via TextAutosizer::processSubtree). // We should invoke setNeedsLayout here. setNeedsLayoutInAllFrames(); break; case SettingsDelegate::ScriptEnableChange: m_inspectorController->scriptsEnabled(settings().scriptEnabled()); break; case SettingsDelegate::FontFamilyChange: for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()) frame->document()->styleEngine()->updateGenericFontFamilySettings(); setNeedsRecalcStyleInAllFrames(); break; } }
void Page::settingsChanged(SettingsDelegate::ChangeType changeType) { switch (changeType) { case SettingsDelegate::StyleChange: setNeedsRecalcStyleInAllFrames(); break; case SettingsDelegate::ViewportDescriptionChange: if (mainFrame() && mainFrame()->isLocalFrame()) deprecatedLocalMainFrame()->document()->updateViewportDescription(); break; case SettingsDelegate::MediaTypeChange: if (m_mainFrame->isLocalFrame()) { deprecatedLocalMainFrame()->view()->setMediaType(AtomicString(settings().mediaTypeOverride())); setNeedsRecalcStyleInAllFrames(); } break; case SettingsDelegate::DNSPrefetchingChange: for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()) { if (frame->isLocalFrame()) toLocalFrame(frame)->document()->initDNSPrefetch(); } break; case SettingsDelegate::MultisamplingChange: { WillBeHeapHashSet<RawPtrWillBeWeakMember<MultisamplingChangedObserver> >::iterator stop = m_multisamplingChangedObservers.end(); for (WillBeHeapHashSet<RawPtrWillBeWeakMember<MultisamplingChangedObserver> >::iterator it = m_multisamplingChangedObservers.begin(); it != stop; ++it) (*it)->multisamplingChanged(m_settings->openGLMultisamplingEnabled()); break; } case SettingsDelegate::ImageLoadingChange: for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()) { if (frame->isLocalFrame()) { toLocalFrame(frame)->document()->fetcher()->setImagesEnabled(settings().imagesEnabled()); toLocalFrame(frame)->document()->fetcher()->setAutoLoadImages(settings().loadsImagesAutomatically()); } } break; case SettingsDelegate::TextAutosizingChange: if (!mainFrame() || !mainFrame()->isLocalFrame()) break; if (FastTextAutosizer* textAutosizer = deprecatedLocalMainFrame()->document()->fastTextAutosizer()) { textAutosizer->updatePageInfoInAllFrames(); } else { for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()) { if (!frame->isLocalFrame()) continue; if (TextAutosizer* textAutosizer = toLocalFrame(frame)->document()->textAutosizer()) textAutosizer->recalculateMultipliers(); } // TextAutosizing updates RenderStyle during layout phase (via TextAutosizer::processSubtree). // We should invoke setNeedsLayout here. setNeedsLayoutInAllFrames(); } break; case SettingsDelegate::ScriptEnableChange: m_inspectorController->scriptsEnabled(settings().scriptEnabled()); break; case SettingsDelegate::FontFamilyChange: for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()) { if (frame->isLocalFrame()) toLocalFrame(frame)->document()->styleEngine()->updateGenericFontFamilySettings(); } setNeedsRecalcStyleInAllFrames(); break; case SettingsDelegate::AcceleratedCompositingChange: updateAcceleratedCompositingSettings(); break; } }