// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "sky/engine/platform/ScriptForbiddenScope.h"

#include "sky/engine/wtf/Assertions.h"
#include "sky/engine/wtf/MainThread.h"

namespace blink {

static unsigned s_scriptForbiddenCount = 0;

ScriptForbiddenScope::ScriptForbiddenScope()
{
    ASSERT(isMainThread());
    ++s_scriptForbiddenCount;
}

ScriptForbiddenScope::~ScriptForbiddenScope()
{
    ASSERT(isMainThread());
    ASSERT(s_scriptForbiddenCount);
    --s_scriptForbiddenCount;
}

void ScriptForbiddenScope::enter()
{
    ASSERT(isMainThread());
    ++s_scriptForbiddenCount;
}

void ScriptForbiddenScope::exit()
{
    ASSERT(isMainThread());
    ASSERT(s_scriptForbiddenCount);
    --s_scriptForbiddenCount;
}

bool ScriptForbiddenScope::isScriptForbidden()
{
    return isMainThread() && s_scriptForbiddenCount;
}

ScriptForbiddenScope::AllowUserAgentScript::AllowUserAgentScript()
    : m_change(s_scriptForbiddenCount, 0)
{
}

ScriptForbiddenScope::AllowUserAgentScript::~AllowUserAgentScript()
{
    ASSERT(!s_scriptForbiddenCount);
}

} // namespace blink
