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