OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "base/command_line.h" | |
6 #include "base/stats_table.h" | 5 #include "base/stats_table.h" |
7 #include "third_party/WebKit/WebKit/chromium/public/WebCache.h" | 6 #include "third_party/WebKit/WebKit/chromium/public/WebCache.h" |
8 #include "webkit/extensions/v8/benchmarking_extension.h" | 7 #include "webkit/extensions/v8/benchmarking_extension.h" |
9 #include "webkit/glue/webkit_glue.h" | 8 #include "webkit/glue/webkit_glue.h" |
10 | 9 |
11 using WebKit::WebCache; | 10 using WebKit::WebCache; |
12 | 11 |
13 namespace extensions_v8 { | 12 namespace extensions_v8 { |
14 | 13 |
15 const char* kBenchmarkingExtensionName = "v8/Benchmarking"; | 14 const char* kBenchmarkingExtensionName = "v8/Benchmarking"; |
(...skipping 13 matching lines...) Expand all Loading... |
29 " ClearCache();" | 28 " ClearCache();" |
30 "};" | 29 "};" |
31 "chrome.benchmarking.closeConnections = function() {" | 30 "chrome.benchmarking.closeConnections = function() {" |
32 " native function CloseConnections();" | 31 " native function CloseConnections();" |
33 " CloseConnections();" | 32 " CloseConnections();" |
34 "};" | 33 "};" |
35 "chrome.benchmarking.counter = function(name) {" | 34 "chrome.benchmarking.counter = function(name) {" |
36 " native function GetCounter();" | 35 " native function GetCounter();" |
37 " return GetCounter(name);" | 36 " return GetCounter(name);" |
38 "};" | 37 "};" |
39 "chrome.benchmarking.isSingleProcess = function() {" | |
40 " native function IsSingleProcess();" | |
41 " return IsSingleProcess();" | |
42 "};" | |
43 ) {} | 38 ) {} |
44 | 39 |
45 virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( | 40 virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( |
46 v8::Handle<v8::String> name) { | 41 v8::Handle<v8::String> name) { |
47 if (name->Equals(v8::String::New("CloseConnections"))) { | 42 if (name->Equals(v8::String::New("CloseConnections"))) { |
48 return v8::FunctionTemplate::New(CloseConnections); | 43 return v8::FunctionTemplate::New(CloseConnections); |
49 } else if (name->Equals(v8::String::New("ClearCache"))) { | 44 } else if (name->Equals(v8::String::New("ClearCache"))) { |
50 return v8::FunctionTemplate::New(ClearCache); | 45 return v8::FunctionTemplate::New(ClearCache); |
51 } else if (name->Equals(v8::String::New("GetCounter"))) { | 46 } else if (name->Equals(v8::String::New("GetCounter"))) { |
52 return v8::FunctionTemplate::New(GetCounter); | 47 return v8::FunctionTemplate::New(GetCounter); |
53 } else if (name->Equals(v8::String::New("IsSingleProcess"))) { | |
54 return v8::FunctionTemplate::New(IsSingleProcess); | |
55 } | 48 } |
56 return v8::Handle<v8::FunctionTemplate>(); | 49 return v8::Handle<v8::FunctionTemplate>(); |
57 } | 50 } |
58 | 51 |
59 static v8::Handle<v8::Value> CloseConnections(const v8::Arguments& args) { | 52 static v8::Handle<v8::Value> CloseConnections(const v8::Arguments& args) { |
60 webkit_glue::CloseCurrentConnections(); | 53 webkit_glue::CloseCurrentConnections(); |
61 return v8::Undefined(); | 54 return v8::Undefined(); |
62 } | 55 } |
63 | 56 |
64 static v8::Handle<v8::Value> ClearCache(const v8::Arguments& args) { | 57 static v8::Handle<v8::Value> ClearCache(const v8::Arguments& args) { |
65 webkit_glue::ClearCache(); | 58 webkit_glue::ClearCache(); |
66 WebCache::clear(); | 59 WebCache::clear(); |
67 return v8::Undefined(); | 60 return v8::Undefined(); |
68 } | 61 } |
69 | 62 |
70 static v8::Handle<v8::Value> GetCounter(const v8::Arguments& args) { | 63 static v8::Handle<v8::Value> GetCounter(const v8::Arguments& args) { |
71 if (!args.Length() || !args[0]->IsString() || !StatsTable::current()) | 64 if (!args.Length() || !args[0]->IsString() || !StatsTable::current()) |
72 return v8::Undefined(); | 65 return v8::Undefined(); |
73 | 66 |
74 // Extract the name argument | 67 // Extract the name argument |
75 char name[256]; | 68 char name[256]; |
76 name[0] = 'c'; | 69 name[0] = 'c'; |
77 name[1] = ':'; | 70 name[1] = ':'; |
78 args[0]->ToString()->WriteAscii(&name[2], 0, sizeof(name) - 3); | 71 args[0]->ToString()->WriteAscii(&name[2], 0, sizeof(name) - 3); |
79 | 72 |
80 int counter = StatsTable::current()->GetCounterValue(name); | 73 int counter = StatsTable::current()->GetCounterValue(name); |
81 return v8::Integer::New(counter); | 74 return v8::Integer::New(counter); |
82 } | 75 } |
83 | |
84 static v8::Handle<v8::Value> IsSingleProcess(const v8::Arguments& args) { | |
85 return v8::Boolean::New(webkit_glue::IsSingleProcess()); | |
86 } | |
87 }; | 76 }; |
88 | 77 |
89 v8::Extension* BenchmarkingExtension::Get() { | 78 v8::Extension* BenchmarkingExtension::Get() { |
90 return new BenchmarkingWrapper(); | 79 return new BenchmarkingWrapper(); |
91 } | 80 } |
92 | 81 |
93 } // namespace extensions_v8 | 82 } // namespace extensions_v8 |
OLD | NEW |