diff options
-rw-r--r-- | content/renderer/gpu/gpu_benchmarking_extension.cc | 114 | ||||
-rw-r--r-- | content/renderer/memory_benchmarking_extension.cc | 15 | ||||
-rw-r--r-- | content/renderer/skia_benchmarking_extension.cc | 84 | ||||
-rw-r--r-- | content/renderer/web_ui_extension.cc | 21 |
4 files changed, 133 insertions, 101 deletions
diff --git a/content/renderer/gpu/gpu_benchmarking_extension.cc b/content/renderer/gpu/gpu_benchmarking_extension.cc index e304815..96c908e 100644 --- a/content/renderer/gpu/gpu_benchmarking_extension.cc +++ b/content/renderer/gpu/gpu_benchmarking_extension.cc @@ -105,28 +105,33 @@ class SkPictureSerializer { class RenderingStatsEnumerator : public cc::RenderingStats::Enumerator { public: - RenderingStatsEnumerator(v8::Handle<v8::Object> stats_object) - : stats_object(stats_object) { } + RenderingStatsEnumerator(v8::Isolate* isolate, + v8::Handle<v8::Object> stats_object) + : isolate(isolate), stats_object(stats_object) {} virtual void AddInt64(const char* name, int64 value) OVERRIDE { - stats_object->Set(v8::String::New(name), v8::Number::New(value)); + stats_object->Set(v8::String::NewFromUtf8(isolate, name), + v8::Number::New(isolate, value)); } virtual void AddDouble(const char* name, double value) OVERRIDE { - stats_object->Set(v8::String::New(name), v8::Number::New(value)); + stats_object->Set(v8::String::NewFromUtf8(isolate, name), + v8::Number::New(isolate, value)); } virtual void AddInt(const char* name, int value) OVERRIDE { - stats_object->Set(v8::String::New(name), v8::Integer::New(value)); + stats_object->Set(v8::String::NewFromUtf8(isolate, name), + v8::Integer::New(value)); } virtual void AddTimeDeltaInSecondsF(const char* name, const base::TimeDelta& value) OVERRIDE { - stats_object->Set(v8::String::New(name), - v8::Number::New(value.InSecondsF())); + stats_object->Set(v8::String::NewFromUtf8(isolate, name), + v8::Number::New(isolate, value.InSecondsF())); } private: + v8::Isolate* isolate; v8::Handle<v8::Object> stats_object; }; @@ -162,8 +167,8 @@ class CallbackAndContext : public base::RefCounted<CallbackAndContext> { friend class base::RefCounted<CallbackAndContext>; virtual ~CallbackAndContext() { - callback_.Dispose(); - context_.Dispose(); + callback_.Reset(); + context_.Reset(); } v8::Isolate* isolate_; @@ -328,32 +333,37 @@ class GpuBenchmarkingWrapper : public v8::Extension { " return HasGpuProcess();" "};") {} - virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( + virtual v8::Handle<v8::FunctionTemplate> GetNativeFunctionTemplate( + v8::Isolate* isolate, v8::Handle<v8::String> name) OVERRIDE { - if (name->Equals(v8::String::New("SetNeedsDisplayOnAllLayers"))) - return v8::FunctionTemplate::New(SetNeedsDisplayOnAllLayers); - if (name->Equals(v8::String::New("SetRasterizeOnlyVisibleContent"))) - return v8::FunctionTemplate::New(SetRasterizeOnlyVisibleContent); - if (name->Equals(v8::String::New("GetRenderingStats"))) - return v8::FunctionTemplate::New(GetRenderingStats); - if (name->Equals(v8::String::New("GetGpuRenderingStats"))) - return v8::FunctionTemplate::New(GetGpuRenderingStats); - if (name->Equals(v8::String::New("PrintToSkPicture"))) - return v8::FunctionTemplate::New(PrintToSkPicture); - if (name->Equals(v8::String::New("BeginSmoothScroll"))) - return v8::FunctionTemplate::New(BeginSmoothScroll); - if (name->Equals(v8::String::New("SmoothScrollSendsTouch"))) - return v8::FunctionTemplate::New(SmoothScrollSendsTouch); - if (name->Equals(v8::String::New("BeginPinch"))) - return v8::FunctionTemplate::New(BeginPinch); - if (name->Equals(v8::String::New("BeginWindowSnapshotPNG"))) - return v8::FunctionTemplate::New(BeginWindowSnapshotPNG); - if (name->Equals(v8::String::New("ClearImageCache"))) - return v8::FunctionTemplate::New(ClearImageCache); - if (name->Equals(v8::String::New("RunMicroBenchmark"))) - return v8::FunctionTemplate::New(RunMicroBenchmark); - if (name->Equals(v8::String::New("HasGpuProcess"))) - return v8::FunctionTemplate::New(HasGpuProcess); + if (name->Equals( + v8::String::NewFromUtf8(isolate, "SetNeedsDisplayOnAllLayers"))) + return v8::FunctionTemplate::New(isolate, SetNeedsDisplayOnAllLayers); + if (name->Equals( + v8::String::NewFromUtf8(isolate, "SetRasterizeOnlyVisibleContent"))) + return v8::FunctionTemplate::New(isolate, SetRasterizeOnlyVisibleContent); + if (name->Equals(v8::String::NewFromUtf8(isolate, "GetRenderingStats"))) + return v8::FunctionTemplate::New(isolate, GetRenderingStats); + if (name->Equals(v8::String::NewFromUtf8(isolate, "GetGpuRenderingStats"))) + return v8::FunctionTemplate::New(isolate, GetGpuRenderingStats); + if (name->Equals(v8::String::NewFromUtf8(isolate, "PrintToSkPicture"))) + return v8::FunctionTemplate::New(isolate, PrintToSkPicture); + if (name->Equals(v8::String::NewFromUtf8(isolate, "BeginSmoothScroll"))) + return v8::FunctionTemplate::New(isolate, BeginSmoothScroll); + if (name->Equals( + v8::String::NewFromUtf8(isolate, "SmoothScrollSendsTouch"))) + return v8::FunctionTemplate::New(isolate, SmoothScrollSendsTouch); + if (name->Equals(v8::String::NewFromUtf8(isolate, "BeginPinch"))) + return v8::FunctionTemplate::New(isolate, BeginPinch); + if (name->Equals( + v8::String::NewFromUtf8(isolate, "BeginWindowSnapshotPNG"))) + return v8::FunctionTemplate::New(isolate, BeginWindowSnapshotPNG); + if (name->Equals(v8::String::NewFromUtf8(isolate, "ClearImageCache"))) + return v8::FunctionTemplate::New(isolate, ClearImageCache); + if (name->Equals(v8::String::NewFromUtf8(isolate, "RunMicroBenchmark"))) + return v8::FunctionTemplate::New(isolate, RunMicroBenchmark); + if (name->Equals(v8::String::NewFromUtf8(isolate, "HasGpuProcess"))) + return v8::FunctionTemplate::New(isolate, HasGpuProcess); return v8::Handle<v8::FunctionTemplate>(); } @@ -392,7 +402,7 @@ class GpuBenchmarkingWrapper : public v8::Extension { context.render_view_impl()->GetBrowserRenderingStats(&browser_stats); v8::Handle<v8::Object> stats_object = v8::Object::New(); - RenderingStatsEnumerator enumerator(stats_object); + RenderingStatsEnumerator enumerator(args.GetIsolate(), stats_object); stats.rendering_stats.EnumerateFields(&enumerator); gpu_stats.EnumerateFields(&enumerator); browser_stats.EnumerateFields(&enumerator); @@ -410,8 +420,9 @@ class GpuBenchmarkingWrapper : public v8::Extension { content::GpuRenderingStats gpu_stats; context.render_view_impl()->GetGpuRenderingStats(&gpu_stats); - v8::Handle<v8::Object> stats_object = v8::Object::New(); - RenderingStatsEnumerator enumerator(stats_object); + v8::Isolate* isolate = args.GetIsolate(); + v8::Handle<v8::Object> stats_object = v8::Object::New(isolate); + RenderingStatsEnumerator enumerator(isolate, stats_object); gpu_stats.EnumerateFields(&enumerator); args.GetReturnValue().Set(stats_object); @@ -422,7 +433,7 @@ class GpuBenchmarkingWrapper : public v8::Extension { if (args.Length() != 1) return; - v8::String::AsciiValue dirname(args[0]); + v8::String::Utf8Value dirname(args[0]); if (dirname.length() == 0) return; @@ -440,8 +451,9 @@ class GpuBenchmarkingWrapper : public v8::Extension { !base::PathIsWritable(dirpath)) { std::string msg("Path is not writable: "); msg.append(dirpath.MaybeAsASCII()); - v8::ThrowException(v8::Exception::Error( - v8::String::New(msg.c_str(), msg.length()))); + v8::Isolate* isolate = args.GetIsolate(); + isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8( + isolate, msg.c_str(), v8::String::kNormalString, msg.length()))); return; } @@ -598,7 +610,8 @@ class GpuBenchmarkingWrapper : public v8::Extension { static void OnSnapshotCompleted(CallbackAndContext* callback_and_context, const gfx::Size& size, const std::vector<unsigned char>& png) { - v8::HandleScope scope(callback_and_context->isolate()); + v8::Isolate* isolate = callback_and_context->isolate(); + v8::HandleScope scope(isolate); v8::Handle<v8::Context> context = callback_and_context->GetContext(); v8::Context::Scope context_scope(context); WebFrame* frame = WebFrame::frameForContext(context); @@ -608,24 +621,27 @@ class GpuBenchmarkingWrapper : public v8::Extension { if(!size.IsEmpty()) { v8::Handle<v8::Object> result_object; - result_object = v8::Object::New(); + result_object = v8::Object::New(isolate); - result_object->Set(v8::String::New("width"), - v8::Number::New(size.width())); - result_object->Set(v8::String::New("height"), - v8::Number::New(size.height())); + result_object->Set(v8::String::NewFromUtf8(isolate, "width"), + v8::Number::New(isolate, size.width())); + result_object->Set(v8::String::NewFromUtf8(isolate, "height"), + v8::Number::New(isolate, size.height())); std::string base64_png; base::Base64Encode(base::StringPiece( reinterpret_cast<const char*>(&*png.begin()), png.size()), &base64_png); - result_object->Set(v8::String::New("data"), - v8::String::New(base64_png.c_str(), base64_png.size())); + result_object->Set(v8::String::NewFromUtf8(isolate, "data"), + v8::String::NewFromUtf8(isolate, + base64_png.c_str(), + v8::String::kNormalString, + base64_png.size())); result = result_object; } else { - result = v8::Null(); + result = v8::Null(isolate); } v8::Handle<v8::Value> argv[] = { result }; diff --git a/content/renderer/memory_benchmarking_extension.cc b/content/renderer/memory_benchmarking_extension.cc index e463fcf..50d5dcc 100644 --- a/content/renderer/memory_benchmarking_extension.cc +++ b/content/renderer/memory_benchmarking_extension.cc @@ -41,12 +41,13 @@ class MemoryBenchmarkingWrapper : public v8::Extension { "};" ) {} - virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( + virtual v8::Handle<v8::FunctionTemplate> GetNativeFunctionTemplate( + v8::Isolate* isolate, v8::Handle<v8::String> name) OVERRIDE { - if (name->Equals(v8::String::New("IsHeapProfilerRunning"))) - return v8::FunctionTemplate::New(IsHeapProfilerRunning); - else if (name->Equals(v8::String::New("HeapProfilerDump"))) - return v8::FunctionTemplate::New(HeapProfilerDump); + if (name->Equals(v8::String::NewFromUtf8(isolate, "IsHeapProfilerRunning"))) + return v8::FunctionTemplate::New(isolate, IsHeapProfilerRunning); + else if (name->Equals(v8::String::NewFromUtf8(isolate, "HeapProfilerDump"))) + return v8::FunctionTemplate::New(isolate, HeapProfilerDump); return v8::Handle<v8::FunctionTemplate>(); } @@ -60,10 +61,10 @@ class MemoryBenchmarkingWrapper : public v8::Extension { const v8::FunctionCallbackInfo<v8::Value>& args) { std::string process_type; if (args.Length() && args[0]->IsString()) - process_type = *v8::String::AsciiValue(args[0]); + process_type = *v8::String::Utf8Value(args[0]); std::string reason("benchmarking_extension"); if (args.Length() > 1 && args[1]->IsString()) - reason = *v8::String::AsciiValue(args[1]); + reason = *v8::String::Utf8Value(args[1]); if (process_type == "browser") { content::RenderThreadImpl::current()->Send( new MemoryBenchmarkHostMsg_HeapProfilerDump(reason)); diff --git a/content/renderer/skia_benchmarking_extension.cc b/content/renderer/skia_benchmarking_extension.cc index 46fd14d..d19dd62 100644 --- a/content/renderer/skia_benchmarking_extension.cc +++ b/content/renderer/skia_benchmarking_extension.cc @@ -30,22 +30,25 @@ namespace { const char kSkiaBenchmarkingExtensionName[] = "v8/SkiaBenchmarking"; -static scoped_ptr<base::Value> ParsePictureArg(v8::Handle<v8::Value> arg) { +static scoped_ptr<base::Value> ParsePictureArg(v8::Isolate* isolate, + v8::Handle<v8::Value> arg) { scoped_ptr<content::V8ValueConverter> converter( content::V8ValueConverter::create()); return scoped_ptr<base::Value>( - converter->FromV8Value(arg, v8::Context::GetCurrent())); + converter->FromV8Value(arg, isolate->GetCurrentContext())); } -static scoped_refptr<cc::Picture> ParsePictureStr(v8::Handle<v8::Value> arg) { - scoped_ptr<base::Value> picture_value = ParsePictureArg(arg); +static scoped_refptr<cc::Picture> ParsePictureStr(v8::Isolate* isolate, + v8::Handle<v8::Value> arg) { + scoped_ptr<base::Value> picture_value = ParsePictureArg(isolate, arg); if (!picture_value) return NULL; return cc::Picture::CreateFromSkpValue(picture_value.get()); } -static scoped_refptr<cc::Picture> ParsePictureHash(v8::Handle<v8::Value> arg) { - scoped_ptr<base::Value> picture_value = ParsePictureArg(arg); +static scoped_refptr<cc::Picture> ParsePictureHash(v8::Isolate* isolate, + v8::Handle<v8::Value> arg) { + scoped_ptr<base::Value> picture_value = ParsePictureArg(isolate, arg); if (!picture_value) return NULL; return cc::Picture::CreateFromValue(picture_value.get()); @@ -118,16 +121,17 @@ class SkiaBenchmarkingWrapper : public v8::Extension { content::SkiaBenchmarkingExtension::InitSkGraphics(); } - virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( + virtual v8::Handle<v8::FunctionTemplate> GetNativeFunctionTemplate( + v8::Isolate* isolate, v8::Handle<v8::String> name) OVERRIDE { - if (name->Equals(v8::String::New("Rasterize"))) - return v8::FunctionTemplate::New(Rasterize); - if (name->Equals(v8::String::New("GetOps"))) - return v8::FunctionTemplate::New(GetOps); - if (name->Equals(v8::String::New("GetOpTimings"))) - return v8::FunctionTemplate::New(GetOpTimings); - if (name->Equals(v8::String::New("GetInfo"))) - return v8::FunctionTemplate::New(GetInfo); + if (name->Equals(v8::String::NewFromUtf8(isolate, "Rasterize"))) + return v8::FunctionTemplate::New(isolate, Rasterize); + if (name->Equals(v8::String::NewFromUtf8(isolate, "GetOps"))) + return v8::FunctionTemplate::New(isolate, GetOps); + if (name->Equals(v8::String::NewFromUtf8(isolate, "GetOpTimings"))) + return v8::FunctionTemplate::New(isolate, GetOpTimings); + if (name->Equals(v8::String::NewFromUtf8(isolate, "GetInfo"))) + return v8::FunctionTemplate::New(isolate, GetInfo); return v8::Handle<v8::FunctionTemplate>(); } @@ -136,7 +140,8 @@ class SkiaBenchmarkingWrapper : public v8::Extension { if (args.Length() < 1) return; - scoped_refptr<cc::Picture> picture = ParsePictureHash(args[0]); + v8::Isolate* isolate = args.GetIsolate(); + scoped_refptr<cc::Picture> picture = ParsePictureHash(isolate, args[0]); if (!picture.get()) return; @@ -149,7 +154,7 @@ class SkiaBenchmarkingWrapper : public v8::Extension { scoped_ptr<content::V8ValueConverter> converter( content::V8ValueConverter::create()); scoped_ptr<base::Value> params_value( - converter->FromV8Value(args[1], v8::Context::GetCurrent())); + converter->FromV8Value(args[1], isolate->GetCurrentContext())); const base::DictionaryValue* params_dict = NULL; if (params_value.get() && params_value->GetAsDictionary(¶ms_dict)) { @@ -216,11 +221,11 @@ class SkiaBenchmarkingWrapper : public v8::Extension { } v8::Handle<v8::Object> result = v8::Object::New(); - result->Set(v8::String::New("width"), + result->Set(v8::String::NewFromUtf8(isolate, "width"), v8::Number::New(snapped_clip.width())); - result->Set(v8::String::New("height"), + result->Set(v8::String::NewFromUtf8(isolate, "height"), v8::Number::New(snapped_clip.height())); - result->Set(v8::String::New("data"), buffer.toV8Value()); + result->Set(v8::String::NewFromUtf8(isolate, "data"), buffer.toV8Value()); args.GetReturnValue().Set(result); } @@ -229,7 +234,8 @@ class SkiaBenchmarkingWrapper : public v8::Extension { if (args.Length() != 1) return; - scoped_refptr<cc::Picture> picture = ParsePictureHash(args[0]); + v8::Isolate* isolate = args.GetIsolate(); + scoped_refptr<cc::Picture> picture = ParsePictureHash(isolate, args[0]); if (!picture.get()) return; @@ -237,25 +243,27 @@ class SkiaBenchmarkingWrapper : public v8::Extension { SkDebugCanvas canvas(bounds.width(), bounds.height()); picture->Replay(&canvas); - v8::Local<v8::Array> result = v8::Array::New(canvas.getSize()); + v8::Local<v8::Array> result = v8::Array::New(isolate, canvas.getSize()); for (int i = 0; i < canvas.getSize(); ++i) { DrawType cmd_type = canvas.getDrawCommandAt(i)->getType(); v8::Handle<v8::Object> cmd = v8::Object::New(); - cmd->Set(v8::String::New("cmd_type"), v8::Integer::New(cmd_type)); - cmd->Set(v8::String::New("cmd_string"), v8::String::New( - SkDrawCommand::GetCommandString(cmd_type))); + cmd->Set(v8::String::NewFromUtf8(isolate, "cmd_type"), + v8::Integer::New(isolate, cmd_type)); + cmd->Set(v8::String::NewFromUtf8(isolate, "cmd_string"), + v8::String::NewFromUtf8( + isolate, SkDrawCommand::GetCommandString(cmd_type))); SkTDArray<SkString*>* info = canvas.getCommandInfo(i); DCHECK(info); - v8::Local<v8::Array> v8_info = v8::Array::New(info->count()); + v8::Local<v8::Array> v8_info = v8::Array::New(isolate, info->count()); for (int j = 0; j < info->count(); ++j) { const SkString* info_str = (*info)[j]; DCHECK(info_str); - v8_info->Set(j, v8::String::New(info_str->c_str())); + v8_info->Set(j, v8::String::NewFromUtf8(isolate, info_str->c_str())); } - cmd->Set(v8::String::New("info"), v8_info); + cmd->Set(v8::String::NewFromUtf8(isolate, "info"), v8_info); result->Set(i, cmd); } @@ -267,7 +275,8 @@ class SkiaBenchmarkingWrapper : public v8::Extension { if (args.Length() != 1) return; - scoped_refptr<cc::Picture> picture = ParsePictureHash(args[0]); + v8::Isolate* isolate = args.GetIsolate(); + scoped_refptr<cc::Picture> picture = ParsePictureHash(isolate, args[0]); if (!picture.get()) return; @@ -289,14 +298,14 @@ class SkiaBenchmarkingWrapper : public v8::Extension { picture->Replay(&benchmarking_canvas); v8::Local<v8::Array> op_times = - v8::Array::New(benchmarking_canvas.CommandCount()); + v8::Array::New(isolate, benchmarking_canvas.CommandCount()); for (size_t i = 0; i < benchmarking_canvas.CommandCount(); ++i) op_times->Set(i, v8::Number::New(benchmarking_canvas.GetTime(i))); - v8::Handle<v8::Object> result = v8::Object::New(); - result->Set(v8::String::New("total_time"), + v8::Handle<v8::Object> result = v8::Object::New(isolate); + result->Set(v8::String::NewFromUtf8(isolate, "total_time"), v8::Number::New(total_time.InMillisecondsF())); - result->Set(v8::String::New("cmd_times"), op_times); + result->Set(v8::String::NewFromUtf8(isolate, "cmd_times"), op_times); args.GetReturnValue().Set(result); } @@ -305,14 +314,15 @@ class SkiaBenchmarkingWrapper : public v8::Extension { if (args.Length() != 1) return; - scoped_refptr<cc::Picture> picture = ParsePictureStr(args[0]); + v8::Isolate* isolate = args.GetIsolate(); + scoped_refptr<cc::Picture> picture = ParsePictureStr(isolate, args[0]); if (!picture.get()) return; - v8::Handle<v8::Object> result = v8::Object::New(); - result->Set(v8::String::New("width"), + v8::Handle<v8::Object> result = v8::Object::New(isolate); + result->Set(v8::String::NewFromUtf8(isolate, "width"), v8::Number::New(picture->LayerRect().width())); - result->Set(v8::String::New("height"), + result->Set(v8::String::NewFromUtf8(isolate, "height"), v8::Number::New(picture->LayerRect().height())); args.GetReturnValue().Set(result); diff --git a/content/renderer/web_ui_extension.cc b/content/renderer/web_ui_extension.cc index 2675f39..f887e9d 100644 --- a/content/renderer/web_ui_extension.cc +++ b/content/renderer/web_ui_extension.cc @@ -48,7 +48,8 @@ class WebUIExtensionWrapper : public v8::Extension { WebUIExtensionWrapper(); virtual ~WebUIExtensionWrapper(); - virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( + virtual v8::Handle<v8::FunctionTemplate> GetNativeFunctionTemplate( + v8::Isolate* isolate, v8::Handle<v8::String> name) OVERRIDE; static void Send(const v8::FunctionCallbackInfo<v8::Value>& args); static void GetVariableValue(const v8::FunctionCallbackInfo<v8::Value>& args); @@ -65,12 +66,13 @@ WebUIExtensionWrapper::WebUIExtensionWrapper() WebUIExtensionWrapper::~WebUIExtensionWrapper() {} -v8::Handle<v8::FunctionTemplate> WebUIExtensionWrapper::GetNativeFunction( - v8::Handle<v8::String> name) { - if (name->Equals(v8::String::New("Send"))) - return v8::FunctionTemplate::New(Send); - if (name->Equals(v8::String::New("GetVariableValue"))) - return v8::FunctionTemplate::New(GetVariableValue); +v8::Handle<v8::FunctionTemplate> +WebUIExtensionWrapper::GetNativeFunctionTemplate(v8::Isolate* isolate, + v8::Handle<v8::String> name) { + if (name->Equals(v8::String::NewFromUtf8(isolate, "Send"))) + return v8::FunctionTemplate::New(isolate, Send); + if (name->Equals(v8::String::NewFromUtf8(isolate, "GetVariableValue"))) + return v8::FunctionTemplate::New(isolate, GetVariableValue); return v8::Handle<v8::FunctionTemplate>(); } @@ -155,7 +157,10 @@ void WebUIExtensionWrapper::GetVariableValue( std::string key = *v8::String::Utf8Value(args[0]->ToString()); std::string value = WebUIExtensionData::Get(render_view)->GetValue(key); - args.GetReturnValue().Set(v8::String::New(value.c_str(), value.length())); + args.GetReturnValue().Set(v8::String::NewFromUtf8(args.GetIsolate(), + value.c_str(), + v8::String::kNormalString, + value.length())); } // static |