mirror of
https://github.com/servo/servo.git
synced 2025-07-20 13:53:42 +01:00
Do not duplicate console messages on OHOS/Android (#37994)
Console messages on OHOS/Android targets were duplicated. Originally messages were on the debug level directed to stdout and then redirected to the logger. https://github.com/servo/servo/pull/37912 changed this behavior recently. Testing: Tested by looking at the debug log of certain things. ohos-speedometer for example. Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This commit is contained in:
parent
90a73f7021
commit
a13cc1b25a
1 changed files with 14 additions and 21 deletions
|
@ -47,8 +47,13 @@ impl Console {
|
||||||
ConsoleMessageBuilder::new(level, caller.filename, caller.line, caller.col)
|
ConsoleMessageBuilder::new(level, caller.filename, caller.line, caller.col)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Helper to send a message that only consists of a single string to the devtools
|
/// Helper to send a message that only consists of a single string to log,
|
||||||
|
/// console and stdout
|
||||||
fn send_string_message(global: &GlobalScope, level: LogLevel, message: String) {
|
fn send_string_message(global: &GlobalScope, level: LogLevel, message: String) {
|
||||||
|
let s = DOMString::from(message.clone());
|
||||||
|
log!(level.clone().into(), "{}", &s);
|
||||||
|
console_message_to_stdout(global, &s);
|
||||||
|
|
||||||
let mut builder = Self::build_message(level);
|
let mut builder = Self::build_message(level);
|
||||||
builder.add_argument(message.into());
|
builder.add_argument(message.into());
|
||||||
let log_message = builder.finish();
|
let log_message = builder.finish();
|
||||||
|
@ -77,7 +82,7 @@ impl Console {
|
||||||
|
|
||||||
let msgs = stringify_handle_values(&messages);
|
let msgs = stringify_handle_values(&messages);
|
||||||
// Also log messages to stdout
|
// Also log messages to stdout
|
||||||
console_message(global, &msgs);
|
console_message_to_stdout(global, &msgs);
|
||||||
|
|
||||||
// Also output to the logger which will be at script::dom::console
|
// Also output to the logger which will be at script::dom::console
|
||||||
log!(level.into(), "{}", &msgs);
|
log!(level.into(), "{}", &msgs);
|
||||||
|
@ -97,7 +102,6 @@ impl Console {
|
||||||
// Directly logs a DOMString, without processing the message
|
// Directly logs a DOMString, without processing the message
|
||||||
pub(crate) fn internal_warn(global: &GlobalScope, message: DOMString) {
|
pub(crate) fn internal_warn(global: &GlobalScope, message: DOMString) {
|
||||||
Console::send_string_message(global, LogLevel::Warn, String::from(message.clone()));
|
Console::send_string_message(global, LogLevel::Warn, String::from(message.clone()));
|
||||||
console_message(global, &message);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -335,21 +339,15 @@ fn stringify_handle_values(messages: &[HandleValue]) -> DOMString {
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn console_message(global: &GlobalScope, message: &DOMString) {
|
/// On OHOS/ Android, stdout and stderr will be redirected to go
|
||||||
let prefix = global.current_group_label().unwrap_or_default();
|
/// to the logger. As `Console::method` and `Console::send_string_message`
|
||||||
let formatted_message = format!("{}{}", prefix, message);
|
/// already forwards all messages to the logger with appropriate level
|
||||||
|
/// this does not need to do anything for these targets.
|
||||||
// On ohos / android stdout and stderr don't go anywhere useful,
|
fn console_message_to_stdout(global: &GlobalScope, message: &DOMString) {
|
||||||
// and are redirected in servoshell to the logger again by a
|
|
||||||
// dedicated thread. Better to directly log to the system logger
|
|
||||||
// on ohos / android to avoid this.
|
|
||||||
#[cfg(any(target_os = "android", target_env = "ohos"))]
|
|
||||||
{
|
|
||||||
info!("{}", formatted_message);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "android", target_env = "ohos")))]
|
#[cfg(not(any(target_os = "android", target_env = "ohos")))]
|
||||||
{
|
{
|
||||||
|
let prefix = global.current_group_label().unwrap_or_default();
|
||||||
|
let formatted_message = format!("{}{}", prefix, message);
|
||||||
with_stderr_lock(move || {
|
with_stderr_lock(move || {
|
||||||
println!("{}", formatted_message);
|
println!("{}", formatted_message);
|
||||||
});
|
});
|
||||||
|
@ -405,7 +403,6 @@ impl consoleMethods<crate::DomTypeHolder> for Console {
|
||||||
let message = format!("Assertion failed: {}", stringify_handle_values(&messages));
|
let message = format!("Assertion failed: {}", stringify_handle_values(&messages));
|
||||||
|
|
||||||
Console::send_string_message(global, LogLevel::Log, message.clone());
|
Console::send_string_message(global, LogLevel::Log, message.clone());
|
||||||
console_message(global, &DOMString::from(message));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -414,7 +411,6 @@ impl consoleMethods<crate::DomTypeHolder> for Console {
|
||||||
if let Ok(()) = global.time(label.clone()) {
|
if let Ok(()) = global.time(label.clone()) {
|
||||||
let message = format!("{label}: timer started");
|
let message = format!("{label}: timer started");
|
||||||
Console::send_string_message(global, LogLevel::Log, message.clone());
|
Console::send_string_message(global, LogLevel::Log, message.clone());
|
||||||
console_message(global, &DOMString::from(message));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,7 +420,6 @@ impl consoleMethods<crate::DomTypeHolder> for Console {
|
||||||
let message = format!("{label}: {delta}ms {}", stringify_handle_values(&data));
|
let message = format!("{label}: {delta}ms {}", stringify_handle_values(&data));
|
||||||
|
|
||||||
Console::send_string_message(global, LogLevel::Log, message.clone());
|
Console::send_string_message(global, LogLevel::Log, message.clone());
|
||||||
console_message(global, &DOMString::from(message));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,7 +429,6 @@ impl consoleMethods<crate::DomTypeHolder> for Console {
|
||||||
let message = format!("{label}: {delta}ms");
|
let message = format!("{label}: {delta}ms");
|
||||||
|
|
||||||
Console::send_string_message(global, LogLevel::Log, message.clone());
|
Console::send_string_message(global, LogLevel::Log, message.clone());
|
||||||
console_message(global, &DOMString::from(message));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -459,7 +453,6 @@ impl consoleMethods<crate::DomTypeHolder> for Console {
|
||||||
let message = format!("{label}: {count}");
|
let message = format!("{label}: {count}");
|
||||||
|
|
||||||
Console::send_string_message(global, LogLevel::Log, message.clone());
|
Console::send_string_message(global, LogLevel::Log, message.clone());
|
||||||
console_message(global, &DOMString::from(message));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <https://console.spec.whatwg.org/#countreset>
|
/// <https://console.spec.whatwg.org/#countreset>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue