Home | History | Annotate | Download | only in renderer
      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 EXTENSIONS_RENDERER_SAFE_BUILTINS_H_
      6 #define EXTENSIONS_RENDERER_SAFE_BUILTINS_H_
      7 
      8 #include "v8/include/v8.h"
      9 
     10 namespace extensions {
     11 class ScriptContext;
     12 
     13 // A collection of safe builtin objects, in that they won't be tained by
     14 // extensions overriding methods on them.
     15 class SafeBuiltins {
     16  public:
     17   // Creates the v8::Extension which manages SafeBuiltins instances.
     18   static v8::Extension* CreateV8Extension();
     19 
     20   explicit SafeBuiltins(ScriptContext* context);
     21 
     22   virtual ~SafeBuiltins();
     23 
     24   // Each method returns an object with methods taken from their respective
     25   // builtin object's prototype, adapted to automatically call() themselves.
     26   //
     27   // Examples:
     28   //   Array.prototype.forEach.call(...) becomes Array.forEach(...)
     29   //   Object.prototype.toString.call(...) becomes Object.toString(...)
     30   //   Object.keys.call(...) becomes Object.keys(...)
     31   v8::Local<v8::Object> GetArray() const;
     32   v8::Local<v8::Object> GetFunction() const;
     33   v8::Local<v8::Object> GetJSON() const;
     34   // NOTE(kalman): VS2010 won't compile "GetObject", it mysteriously renames it
     35   // to "GetObjectW" - hence GetObjekt. Sorry.
     36   v8::Local<v8::Object> GetObjekt() const;
     37   v8::Local<v8::Object> GetRegExp() const;
     38   v8::Local<v8::Object> GetString() const;
     39   v8::Local<v8::Object> GetError() const;
     40 
     41  private:
     42   ScriptContext* context_;
     43 };
     44 
     45 }  //  namespace extensions
     46 
     47 #endif  // EXTENSIONS_RENDERER_SAFE_BUILTINS_H_
     48