Changeset 162063 in webkit
- Timestamp:
- Jan 15, 2014, 2:28:52 AM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r162062 r162063 1 2014-01-15 Antti Koivisto <antti@apple.com> 2 3 Suspend resource requests during computedStyle 4 https://bugs.webkit.org/show_bug.cgi?id=127034 5 6 Reviewed by Andreas Kling. 7 8 We have some cases where getting computed style leads to crashes in loadPendingImages. 9 This is probably caused by load callbacks resulting in re-entering WebKit and killing the StyleResolver. 10 11 As a speculative fix suspend resource loads (and so callbacks) when getting the computed style. 12 We do similar suspension during style recalc for the same reason. 13 14 * dom/Document.cpp: 15 (WebCore::Document::styleForElementIgnoringPendingStylesheets): 16 * loader/ResourceLoadScheduler.h: 17 (WebCore::ResourceLoadScheduler::Suspender::Suspender): 18 (WebCore::ResourceLoadScheduler::Suspender::~Suspender): 19 1 20 2014-01-15 László Langó <llango.u-szeged@partner.samsung.com> 2 21 -
trunk/Source/WebCore/dom/Document.cpp
r161851 r162063 93 93 #include "JSLazyEventListener.h" 94 94 #include "Language.h" 95 #include "LoaderStrategy.h" 95 96 #include "Logging.h" 96 97 #include "MainFrame.h" … … 108 109 #include "PageTransitionEvent.h" 109 110 #include "PlatformLocale.h" 111 #include "PlatformStrategies.h" 110 112 #include "PlugInsResources.h" 111 113 #include "PluginDocument.h" … … 115 117 #include "RenderView.h" 116 118 #include "RenderWidget.h" 119 #include "ResourceLoadScheduler.h" 117 120 #include "ResourceLoader.h" 118 121 #include "RuntimeEnabledFeatures.h" … … 1866 1869 { 1867 1870 ASSERT_ARG(element, &element->document() == this); 1871 1872 // On iOS request delegates called during styleForElement may result in re-entering WebKit and killing the style resolver. 1873 ResourceLoadScheduler::Suspender suspender(*platformStrategies()->loaderStrategy()->resourceLoadScheduler()); 1868 1874 1869 1875 TemporaryChange<bool> change(m_ignorePendingStylesheets, true); -
trunk/Source/WebCore/loader/ResourceLoadScheduler.h
r161768 r162063 63 63 virtual void setSerialLoadingEnabled(bool b) { m_isSerialLoadingEnabled = b; } 64 64 65 class Suspender { 66 public: 67 explicit Suspender(ResourceLoadScheduler& scheduler) : m_scheduler(scheduler) { m_scheduler.suspendPendingRequests(); } 68 ~Suspender() { m_scheduler.resumePendingRequests(); } 69 private: 70 ResourceLoadScheduler& m_scheduler; 71 }; 72 65 73 protected: 66 74 ResourceLoadScheduler();
Note:
See TracChangeset
for help on using the changeset viewer.