Add additional V8 performance tests (issue #960).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1292 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt
2013-06-26 22:18:30 +00:00
parent 00375f912c
commit db530ec5e3
7 changed files with 497 additions and 0 deletions

View File

@ -23,6 +23,7 @@ namespace {
const char kGetPerfTests[] = "GetPerfTests";
const char kRunPerfTest[] = "RunPerfTest";
const char kPerfTestReturnValue[] = "PerfTestReturnValue";
class V8Handler : public CefV8Handler {
public:
@ -68,6 +69,52 @@ class V8Handler : public CefV8Handler {
val->SetValue(1, CefV8Value::CreateUInt(kPerfTests[i].iterations));
retval->SetValue(i, val);
}
} else if (name == kPerfTestReturnValue) {
if (arguments.size() == 0) {
retval = CefV8Value::CreateInt(1);
} else if (arguments.size() == 1 && arguments[0]->IsInt()) {
int32 type = arguments[0]->GetIntValue();
CefTime date;
switch (type) {
case 0:
retval = CefV8Value::CreateUndefined();
break;
case 1:
retval = CefV8Value::CreateNull();
break;
case 2:
retval = CefV8Value::CreateBool(true);
break;
case 3:
retval = CefV8Value::CreateInt(1);
break;
case 4:
retval = CefV8Value::CreateUInt(1);
break;
case 5:
retval = CefV8Value::CreateDouble(1.234);
break;
case 6:
date.Now();
retval = CefV8Value::CreateDate(date);
break;
case 7:
retval = CefV8Value::CreateString("Hello, world!");
break;
case 8:
retval = CefV8Value::CreateObject(NULL);
break;
case 9:
retval = CefV8Value::CreateArray(8);
break;
case 10:
// retval = CefV8Value::CreateFunction(...);
exception = "Not implemented";
break;
default:
exception = "Not supported";
}
}
}
return true;
@ -98,6 +145,9 @@ class RenderDelegate : public ClientApp::RenderDelegate {
object->SetValue(kRunPerfTest,
CefV8Value::CreateFunction(kRunPerfTest, handler),
V8_PROPERTY_ATTRIBUTE_READONLY);
object->SetValue(kPerfTestReturnValue,
CefV8Value::CreateFunction(kPerfTestReturnValue, handler),
V8_PROPERTY_ATTRIBUTE_READONLY);
}
private: