Home | History | Annotate | Download | only in platform
      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