• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef ScriptForbiddenScope_h
6 #define ScriptForbiddenScope_h
7 
8 #include "platform/PlatformExport.h"
9 #include "wtf/Assertions.h"
10 #include "wtf/TemporaryChange.h"
11 
12 namespace blink {
13 
14 class PLATFORM_EXPORT ScriptForbiddenScope {
15 public:
16     ScriptForbiddenScope();
17     ~ScriptForbiddenScope();
18 
19     class PLATFORM_EXPORT AllowUserAgentScript {
20     public:
21         AllowUserAgentScript();
22         ~AllowUserAgentScript();
23     private:
24         TemporaryChange<unsigned> m_change;
25     };
26 
27     // FIXME: This should be removed. AllowSuperUnsafeScript is used
28     // to exceptionally allow script execution in ScriptForbiddenScope, because
29     // some real-world plugins try to execute script in ScriptForbiddenScope.
30     // This is unsafe and we should get rid of all the unsafe script executions.
31     class PLATFORM_EXPORT AllowSuperUnsafeScript {
32     public:
33         AllowSuperUnsafeScript();
34         ~AllowSuperUnsafeScript();
35     private:
36         TemporaryChange<unsigned> m_change;
37     };
38 
39     static void enter();
40     static void exit();
41     static bool isScriptForbidden();
42 };
43 
44 } // namespace blink
45 
46 #endif // ScriptForbiddenScope_h
47