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 "platform/ScriptForbiddenScope.h" 7 8#include "wtf/Assertions.h" 9#include "wtf/MainThread.h" 10 11namespace blink { 12 13static unsigned s_scriptForbiddenCount = 0; 14 15ScriptForbiddenScope::ScriptForbiddenScope() 16{ 17 ASSERT(isMainThread()); 18 ++s_scriptForbiddenCount; 19} 20 21ScriptForbiddenScope::~ScriptForbiddenScope() 22{ 23 ASSERT(isMainThread()); 24 ASSERT(s_scriptForbiddenCount); 25 --s_scriptForbiddenCount; 26} 27 28void ScriptForbiddenScope::enter() 29{ 30 ASSERT(isMainThread()); 31 ++s_scriptForbiddenCount; 32} 33 34void ScriptForbiddenScope::exit() 35{ 36 ASSERT(isMainThread()); 37 ASSERT(s_scriptForbiddenCount); 38 --s_scriptForbiddenCount; 39} 40 41bool ScriptForbiddenScope::isScriptForbidden() 42{ 43 return isMainThread() && s_scriptForbiddenCount; 44} 45 46ScriptForbiddenScope::AllowUserAgentScript::AllowUserAgentScript() 47 : m_change(s_scriptForbiddenCount, 0) 48{ 49} 50 51ScriptForbiddenScope::AllowUserAgentScript::~AllowUserAgentScript() 52{ 53 ASSERT(!s_scriptForbiddenCount); 54} 55 56ScriptForbiddenScope::AllowSuperUnsafeScript::AllowSuperUnsafeScript() 57 : m_change(s_scriptForbiddenCount, 0) 58{ 59} 60 61ScriptForbiddenScope::AllowSuperUnsafeScript::~AllowSuperUnsafeScript() 62{ 63 ASSERT(!s_scriptForbiddenCount); 64} 65 66} // namespace blink 67