1 // Copyright (c) 2011 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 #include "chrome/renderer/playback_extension.h" 6 7 #include "v8/include/v8.h" 8 9 const char kPlaybackExtensionName[] = "v8/PlaybackMode"; 10 11 namespace extensions_v8 { 12 13 v8::Extension* PlaybackExtension::Get() { 14 v8::Extension* extension = new v8::Extension( 15 kPlaybackExtensionName, 16 "(function () {" 17 " var orig_date = Date;" 18 " var x = 0;" 19 " var time_seed = 1204251968254;" 20 " Math.random = function() {" 21 " x += .1;" 22 " return (x % 1);" 23 " };" 24 " Date = function() {" 25 " if (this instanceof Date) {" 26 " switch (arguments.length) {" 27 " case 0: return new orig_date(time_seed += 50);" 28 " case 1: return new orig_date(arguments[0]);" 29 " default: return new orig_date(arguments[0], arguments[1]," 30 " arguments.length >= 3 ? arguments[2] : 1," 31 " arguments.length >= 4 ? arguments[3] : 0," 32 " arguments.length >= 5 ? arguments[4] : 0," 33 " arguments.length >= 6 ? arguments[5] : 0," 34 " arguments.length >= 7 ? arguments[6] : 0);" 35 " }" 36 " }" 37 " return new Date().toString();" 38 " };" 39 " Date.__proto__ = orig_date;" 40 " Date.prototype.constructor = Date;" 41 " orig_date.now = function() {" 42 " return new Date().getTime();" 43 " };" 44 "})()"); 45 return extension; 46 } 47 48 } // namespace extensions_v8 49