OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "extensions/renderer/safe_builtins.h" | 5 #include "extensions/renderer/safe_builtins.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
10 #include "extensions/renderer/script_context.h" | 10 #include "extensions/renderer/script_context.h" |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 " ['create', 'defineProperty', 'freeze',\n" | 72 " ['create', 'defineProperty', 'freeze',\n" |
73 " 'getOwnPropertyDescriptor', 'getPrototypeOf', 'keys']);\n" | 73 " 'getOwnPropertyDescriptor', 'getPrototypeOf', 'keys']);\n" |
74 "saveBuiltin(Function,\n" | 74 "saveBuiltin(Function,\n" |
75 " ['apply', 'bind', 'call']);\n" | 75 " ['apply', 'bind', 'call']);\n" |
76 "saveBuiltin(Array,\n" | 76 "saveBuiltin(Array,\n" |
77 " ['concat', 'forEach', 'indexOf', 'join', 'push', 'slice',\n" | 77 " ['concat', 'forEach', 'indexOf', 'join', 'push', 'slice',\n" |
78 " 'splice', 'map', 'filter']);\n" | 78 " 'splice', 'map', 'filter']);\n" |
79 "saveBuiltin(String,\n" | 79 "saveBuiltin(String,\n" |
80 " ['indexOf', 'slice', 'split', 'substr', 'toUpperCase',\n" | 80 " ['indexOf', 'slice', 'split', 'substr', 'toUpperCase',\n" |
81 " 'replace']);\n" | 81 " 'replace']);\n" |
| 82 "// Use exec rather than test to defend against clobbering in the\n" |
| 83 "// presence of ES2015 semantics, which read RegExp.prototype.exec.\n" |
82 "saveBuiltin(RegExp,\n" | 84 "saveBuiltin(RegExp,\n" |
83 " ['test']);\n" | 85 " ['exec']);\n" |
84 "saveBuiltin(Error,\n" | 86 "saveBuiltin(Error,\n" |
85 " [],\n" | 87 " [],\n" |
86 " ['captureStackTrace']);\n" | 88 " ['captureStackTrace']);\n" |
87 "\n" | 89 "\n" |
88 "// JSON is trickier because extensions can override toJSON in\n" | 90 "// JSON is trickier because extensions can override toJSON in\n" |
89 "// incompatible ways, and we need to prevent that.\n" | 91 "// incompatible ways, and we need to prevent that.\n" |
90 "var builtinTypes = [\n" | 92 "var builtinTypes = [\n" |
91 " Object, Function, Array, String, Boolean, Number, Date, RegExp\n" | 93 " Object, Function, Array, String, Boolean, Number, Date, RegExp\n" |
92 "];\n" | 94 "];\n" |
93 "var builtinToJSONs = builtinTypes.map(function(t) {\n" | 95 "var builtinToJSONs = builtinTypes.map(function(t) {\n" |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 | 248 |
247 v8::Local<v8::Object> SafeBuiltins::GetString() const { | 249 v8::Local<v8::Object> SafeBuiltins::GetString() const { |
248 return Load("String", context_->v8_context()); | 250 return Load("String", context_->v8_context()); |
249 } | 251 } |
250 | 252 |
251 v8::Local<v8::Object> SafeBuiltins::GetError() const { | 253 v8::Local<v8::Object> SafeBuiltins::GetError() const { |
252 return Load("Error", context_->v8_context()); | 254 return Load("Error", context_->v8_context()); |
253 } | 255 } |
254 | 256 |
255 } // namespace extensions | 257 } // namespace extensions |
OLD | NEW |