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
10namespace blink {
11
12DeprecatedScheduleStyleRecalcDuringLayout::DeprecatedScheduleStyleRecalcDuringLayout(DocumentLifecycle& lifecycle)
13    : m_lifecycle(lifecycle)
14    , m_deprecatedTransition(DocumentLifecycle::InPerformLayout, DocumentLifecycle::VisualUpdatePending)
15    , m_wasInPerformLayout(lifecycle.state() == DocumentLifecycle::InPerformLayout)
16{
17}
18
19DeprecatedScheduleStyleRecalcDuringLayout::~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