[api] Deprecate Function::GetDisplayName().

Mark Function::GetDisplayName() as deprecated, scheduled for removal
with M92.

Bug: chromium:1177685, chromium:17356
Change-Id: Iedb905d2d5ab6f8ec95f47bbc982e4f03891fd48
Doc: https://bit.ly/devtools-function-displayName-removal
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2690601
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72710}
This commit is contained in:
Benedikt Meurer 2021-02-12 11:33:50 +01:00 committed by Commit Bot
parent cd139abbf8
commit c5cf7db1f2
2 changed files with 5 additions and 71 deletions

View File

@ -4700,6 +4700,11 @@ class V8_EXPORT Function : public Object {
* User-defined name assigned to the "displayName" property of this function.
* Used to facilitate debugging and profiling of JavaScript code.
*/
V8_DEPRECATED(
"Use v8::Object::Get() instead to look up \"displayName\". "
"V8 and DevTools no longer use \"displayName\" in stack "
"traces, but the standard \"name\" property. "
"See http://crbug.com/1177685.")
Local<Value> GetDisplayName() const;
/**

View File

@ -17396,77 +17396,6 @@ THREADED_TEST(FunctionGetDebugName) {
}
THREADED_TEST(FunctionGetDisplayName) {
LocalContext env;
v8::Isolate* isolate = env->GetIsolate();
v8::HandleScope scope(isolate);
const char* code = "var error = false;"
"function a() { this.x = 1; };"
"a.displayName = 'display_a';"
"var b = (function() {"
" var f = function() { this.x = 2; };"
" f.displayName = 'display_b';"
" return f;"
"})();"
"var c = function() {};"
"c.__defineGetter__('displayName', function() {"
" error = true;"
" throw new Error();"
"});"
"function d() {};"
"d.__defineGetter__('displayName', function() {"
" error = true;"
" return 'wrong_display_name';"
"});"
"function e() {};"
"e.displayName = 'wrong_display_name';"
"e.__defineSetter__('displayName', function() {"
" error = true;"
" throw new Error();"
"});"
"function f() {};"
"f.displayName = { 'foo': 6, toString: function() {"
" error = true;"
" return 'wrong_display_name';"
"}};"
"var g = function() {"
" arguments.callee.displayName = 'set_in_runtime';"
"}; g();";
v8::ScriptOrigin origin = v8::ScriptOrigin(isolate, v8_str("test"), 0, 0);
v8::Script::Compile(env.local(), v8_str(code), &origin)
.ToLocalChecked()
->Run(env.local())
.ToLocalChecked();
v8::Local<v8::Value> error =
env->Global()->Get(env.local(), v8_str("error")).ToLocalChecked();
v8::Local<v8::Function> a = v8::Local<v8::Function>::Cast(
env->Global()->Get(env.local(), v8_str("a")).ToLocalChecked());
v8::Local<v8::Function> b = v8::Local<v8::Function>::Cast(
env->Global()->Get(env.local(), v8_str("b")).ToLocalChecked());
v8::Local<v8::Function> c = v8::Local<v8::Function>::Cast(
env->Global()->Get(env.local(), v8_str("c")).ToLocalChecked());
v8::Local<v8::Function> d = v8::Local<v8::Function>::Cast(
env->Global()->Get(env.local(), v8_str("d")).ToLocalChecked());
v8::Local<v8::Function> e = v8::Local<v8::Function>::Cast(
env->Global()->Get(env.local(), v8_str("e")).ToLocalChecked());
v8::Local<v8::Function> f = v8::Local<v8::Function>::Cast(
env->Global()->Get(env.local(), v8_str("f")).ToLocalChecked());
v8::Local<v8::Function> g = v8::Local<v8::Function>::Cast(
env->Global()->Get(env.local(), v8_str("g")).ToLocalChecked());
CHECK(!error->BooleanValue(isolate));
CHECK_EQ(0, strcmp("display_a",
*v8::String::Utf8Value(isolate, a->GetDisplayName())));
CHECK_EQ(0, strcmp("display_b",
*v8::String::Utf8Value(isolate, b->GetDisplayName())));
CHECK(c->GetDisplayName()->IsUndefined());
CHECK(d->GetDisplayName()->IsUndefined());
CHECK(e->GetDisplayName()->IsUndefined());
CHECK(f->GetDisplayName()->IsUndefined());
CHECK_EQ(0, strcmp("set_in_runtime",
*v8::String::Utf8Value(isolate, g->GetDisplayName())));
}
THREADED_TEST(ScriptLineNumber) {
LocalContext env;
v8::Isolate* isolate = env->GetIsolate();