diff options
Diffstat (limited to 'chrome/renderer/playback_extension.cc')
-rw-r--r-- | chrome/renderer/playback_extension.cc | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/chrome/renderer/playback_extension.cc b/chrome/renderer/playback_extension.cc new file mode 100644 index 0000000..5f9f017 --- /dev/null +++ b/chrome/renderer/playback_extension.cc @@ -0,0 +1,48 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/renderer/playback_extension.h" + +#include "v8/include/v8.h" + +const char kPlaybackExtensionName[] = "v8/PlaybackMode"; + +namespace extensions_v8 { + +v8::Extension* PlaybackExtension::Get() { + v8::Extension* extension = new v8::Extension( + kPlaybackExtensionName, + "(function () {" + " var orig_date = Date;" + " var x = 0;" + " var time_seed = 1204251968254;" + " Math.random = function() {" + " x += .1;" + " return (x % 1);" + " };" + " Date = function() {" + " if (this instanceof Date) {" + " switch (arguments.length) {" + " case 0: return new orig_date(time_seed += 50);" + " case 1: return new orig_date(arguments[0]);" + " default: return new orig_date(arguments[0], arguments[1]," + " arguments.length >= 3 ? arguments[2] : 1," + " arguments.length >= 4 ? arguments[3] : 0," + " arguments.length >= 5 ? arguments[4] : 0," + " arguments.length >= 6 ? arguments[5] : 0," + " arguments.length >= 7 ? arguments[6] : 0);" + " }" + " }" + " return new Date().toString();" + " };" + " Date.__proto__ = orig_date;" + " Date.prototype.constructor = Date;" + " orig_date.now = function() {" + " return new Date().getTime();" + " };" + "})()"); + return extension; +} + +} // namespace extensions_v8 |