1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "config.h" 6 #include "core/frame/DeprecatedScheduleStyleRecalcDuringLayout.h" 7 8 #include "wtf/Assertions.h" 9 10 namespace WebCore { 11 12 DeprecatedScheduleStyleRecalcDuringLayout::DeprecatedScheduleStyleRecalcDuringLayout(DocumentLifecycle& lifecycle) 13 : m_lifecycle(lifecycle) 14 , m_deprecatedTransition(DocumentLifecycle::InPerformLayout, DocumentLifecycle::VisualUpdatePending) 15 , m_wasInPerformLayout(lifecycle.state() == DocumentLifecycle::InPerformLayout) 16 { 17 } 18 19 DeprecatedScheduleStyleRecalcDuringLayout::~DeprecatedScheduleStyleRecalcDuringLayout() 20 { 21 // This block of code is intended to restore the state machine to the 22 // proper state. The style recalc will still have been schedule, however. 23 if (m_wasInPerformLayout && m_lifecycle.state() != DocumentLifecycle::InPerformLayout) { 24 ASSERT(m_lifecycle.state() == DocumentLifecycle::VisualUpdatePending); 25 m_lifecycle.advanceTo(DocumentLifecycle::InPerformLayout); 26 } 27 } 28 29 } 30