Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(766)

Unified Diff: test/cctest/test-api.cc

Issue 2526703002: [wasm] [asmjs] Route asm.js warnings to the dev console. (Closed)
Patch Set: merge Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
« no previous file with comments | « test/cctest/asmjs/test-asm-typer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-api.cc
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index 487c1a15750535602eabd3fb52724aee040a90ea..1fb5e5620a684dba9a23af511eaffcf54e10a47b 100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -17349,6 +17349,79 @@ TEST(CaptureStackTraceForUncaughtExceptionAndSetters) {
isolate->SetCaptureStackTraceForUncaughtExceptions(false);
}
+static int asm_warning_triggered = 0;
+
+static void AsmJsWarningListener(v8::Local<v8::Message> message,
+ v8::Local<Value>) {
+ DCHECK_EQ(v8::Isolate::kMessageWarning, message->ErrorLevel());
+ asm_warning_triggered = 1;
+}
+
+TEST(AsmJsWarning) {
+ i::FLAG_validate_asm = true;
+
+ LocalContext env;
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
+
+ asm_warning_triggered = 0;
+ isolate->AddMessageListenerWithErrorLevel(AsmJsWarningListener,
+ v8::Isolate::kMessageAll);
+ CompileRun(
+ "function module() {\n"
+ " 'use asm';\n"
+ " var x = 'hi';\n"
+ " return {};\n"
+ "}\n"
+ "module();");
+ DCHECK_EQ(1, asm_warning_triggered);
+ isolate->RemoveMessageListeners(AsmJsWarningListener);
+}
+
+static int error_level_message_count = 0;
+static int expected_error_level = 0;
+
+static void ErrorLevelListener(v8::Local<v8::Message> message,
+ v8::Local<Value>) {
+ DCHECK_EQ(expected_error_level, message->ErrorLevel());
+ ++error_level_message_count;
+}
+
+TEST(ErrorLevelWarning) {
+ LocalContext env;
+ v8::Isolate* isolate = env->GetIsolate();
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ v8::HandleScope scope(isolate);
+
+ const char* source = "fake = 1;";
+ v8::Local<v8::Script> lscript = CompileWithOrigin(source, "test");
+ i::Handle<i::SharedFunctionInfo> obj = i::Handle<i::SharedFunctionInfo>::cast(
+ v8::Utils::OpenHandle(*lscript->GetUnboundScript()));
+ CHECK(obj->script()->IsScript());
+ i::Handle<i::Script> script(i::Script::cast(obj->script()));
+
+ int levels[] = {
+ v8::Isolate::kMessageLog, v8::Isolate::kMessageInfo,
+ v8::Isolate::kMessageDebug, v8::Isolate::kMessageWarning,
+ };
+ error_level_message_count = 0;
+ isolate->AddMessageListenerWithErrorLevel(ErrorLevelListener,
+ v8::Isolate::kMessageAll);
+ for (size_t i = 0; i < arraysize(levels); i++) {
+ i::MessageLocation location(script, 0, 0);
+ i::Handle<i::String> msg(i_isolate->factory()->InternalizeOneByteString(
+ STATIC_CHAR_VECTOR("test")));
+ i::Handle<i::JSMessageObject> message =
+ i::MessageHandler::MakeMessageObject(
+ i_isolate, i::MessageTemplate::kAsmJsInvalid, &location, msg,
+ i::Handle<i::JSArray>::null());
+ message->set_error_level(levels[i]);
+ expected_error_level = levels[i];
+ i::MessageHandler::ReportMessage(i_isolate, &location, message);
+ }
+ isolate->RemoveMessageListeners(ErrorLevelListener);
+ DCHECK_EQ(arraysize(levels), error_level_message_count);
+}
static void StackTraceFunctionNameListener(v8::Local<v8::Message> message,
v8::Local<Value>) {
« no previous file with comments | « test/cctest/asmjs/test-asm-typer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698