1 // Copyright (c) 2013 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.
5 #include "chrome/renderer/net_benchmarking_extension.h"
7 #include "chrome/common/benchmarking_messages.h"
8 #include "content/public/renderer/render_thread.h"
9 #include "third_party/WebKit/public/web/WebCache.h"
10 #include "v8/include/v8.h"
12 using blink::WebCache
;
14 const char kNetBenchmarkingExtensionName
[] = "v8/NetBenchmarking";
16 namespace extensions_v8
{
18 class NetBenchmarkingWrapper
: public v8::Extension
{
20 NetBenchmarkingWrapper() :
21 v8::Extension(kNetBenchmarkingExtensionName
,
22 "if (typeof(chrome) == 'undefined') {"
25 "if (typeof(chrome.benchmarking) == 'undefined') {"
26 " chrome.benchmarking = {};"
28 "chrome.benchmarking.clearCache = function() {"
29 " native function ClearCache();"
32 "chrome.benchmarking.clearHostResolverCache = function() {"
33 " native function ClearHostResolverCache();"
34 " ClearHostResolverCache();"
36 "chrome.benchmarking.clearPredictorCache = function() {"
37 " native function ClearPredictorCache();"
38 " ClearPredictorCache();"
40 "chrome.benchmarking.closeConnections = function() {"
41 " native function CloseConnections();"
42 " CloseConnections();"
44 "chrome.benchmarking.enableSpdy = function(name) {"
45 " native function EnableSpdy();"
50 virtual v8::Handle
<v8::FunctionTemplate
> GetNativeFunctionTemplate(
52 v8::Handle
<v8::String
> name
) OVERRIDE
{
53 if (name
->Equals(v8::String::NewFromUtf8(isolate
, "ClearCache"))) {
54 return v8::FunctionTemplate::New(isolate
, ClearCache
);
55 } else if (name
->Equals(v8::String::NewFromUtf8(
56 isolate
, "ClearHostResolverCache"))) {
57 return v8::FunctionTemplate::New(isolate
, ClearHostResolverCache
);
58 } else if (name
->Equals(
59 v8::String::NewFromUtf8(isolate
, "ClearPredictorCache"))) {
60 return v8::FunctionTemplate::New(isolate
, ClearPredictorCache
);
61 } else if (name
->Equals(v8::String::NewFromUtf8(isolate
, "EnableSpdy"))) {
62 return v8::FunctionTemplate::New(isolate
, EnableSpdy
);
63 } else if (name
->Equals(
64 v8::String::NewFromUtf8(isolate
, "CloseConnections"))) {
65 return v8::FunctionTemplate::New(isolate
, CloseConnections
);
68 return v8::Handle
<v8::FunctionTemplate
>();
71 static void ClearCache(const v8::FunctionCallbackInfo
<v8::Value
>& args
) {
73 content::RenderThread::Get()->Send(new ChromeViewHostMsg_ClearCache(&rv
));
77 static void ClearHostResolverCache(
78 const v8::FunctionCallbackInfo
<v8::Value
>& args
) {
80 content::RenderThread::Get()->Send(
81 new ChromeViewHostMsg_ClearHostResolverCache(&rv
));
84 static void ClearPredictorCache(
85 const v8::FunctionCallbackInfo
<v8::Value
>& args
) {
87 content::RenderThread::Get()->Send(
88 new ChromeViewHostMsg_ClearPredictorCache(&rv
));
91 static void CloseConnections(
92 const v8::FunctionCallbackInfo
<v8::Value
>& args
) {
93 content::RenderThread::Get()->Send(
94 new ChromeViewHostMsg_CloseCurrentConnections());
97 static void EnableSpdy(const v8::FunctionCallbackInfo
<v8::Value
>& args
) {
98 if (!args
.Length() || !args
[0]->IsBoolean())
101 content::RenderThread::Get()->Send(new ChromeViewHostMsg_EnableSpdy(
102 args
[0]->BooleanValue()));
106 v8::Extension
* NetBenchmarkingExtension::Get() {
107 return new NetBenchmarkingWrapper();
110 } // namespace extensions_v8