Adopt absl::string_view in rtc_base/log_sinks
This is part of a large scale effort to increase adoption of
absl::string_view across the WebRTC code base.
This CL adds absl::string_view versions of the OnLogMessage functions in
rtc::LogSink. The const std::string& versions are kept for now since
downstream clients use subclasses of LogSink and need to be migrated
before these are removed.
Bug: webrtc:13579
Change-Id: I57bb72ad503805ff0ca16f1d7aece2d44c65cb73
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253980
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Xavier Lepaul <xalep@webrtc.org>
Owners-Override: Xavier Lepaul <xalep@webrtc.org>
Commit-Queue: Ali Tofigh <alito@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36189}
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 718d927..a5c7d47 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -149,6 +149,8 @@
"../rtc_base:checks",
]
+ absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
+
frameworks = [
"AVFoundation.framework",
"CoreMedia.framework",
@@ -180,6 +182,7 @@
deps = [
":base_objc",
+ ":helpers_objc",
"../rtc_base",
"../rtc_base:checks",
"../rtc_base:logging",
@@ -189,6 +192,8 @@
"..:common_objc",
":used_from_extension",
]
+
+ absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}
rtc_library("file_logger_objc") {
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index 7bc3050..f81d3d5 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -1137,6 +1137,8 @@
":native_api_jni",
"../../rtc_base",
]
+
+ absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}
rtc_library("audio_device_module_base") {
@@ -1620,7 +1622,10 @@
"../../test:test_support",
"../../testing/gtest",
]
- absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
+ absl_deps = [
+ "//third_party/abseil-cpp/absl/memory",
+ "//third_party/abseil-cpp/absl/strings",
+ ]
}
rtc_android_library("native_unittests_java") {
diff --git a/sdk/android/native_unittests/stacktrace/stacktrace_unittest.cc b/sdk/android/native_unittests/stacktrace/stacktrace_unittest.cc
index b77d867..5cbd4aa 100644
--- a/sdk/android/native_unittests/stacktrace/stacktrace_unittest.cc
+++ b/sdk/android/native_unittests/stacktrace/stacktrace_unittest.cc
@@ -16,6 +16,7 @@
#include <memory>
#include <vector>
+#include "absl/strings/string_view.h"
#include "rtc_base/event.h"
#include "rtc_base/logging.h"
#include "rtc_base/platform_thread.h"
@@ -201,6 +202,9 @@
explicit LookoutLogSink(std::string look_for)
: look_for_(std::move(look_for)) {}
void OnLogMessage(const std::string& message) override {
+ OnLogMessage(absl::string_view(message));
+ }
+ void OnLogMessage(absl::string_view message) override {
if (message.find(look_for_) != std::string::npos) {
when_found_.Set();
}
diff --git a/sdk/android/src/jni/logging/log_sink.cc b/sdk/android/src/jni/logging/log_sink.cc
index cebc866..84394d8 100644
--- a/sdk/android/src/jni/logging/log_sink.cc
+++ b/sdk/android/src/jni/logging/log_sink.cc
@@ -9,6 +9,7 @@
*/
#include "sdk/android/src/jni/logging/log_sink.h"
+#include "absl/strings/string_view.h"
#include "sdk/android/generated_logging_jni/JNILogging_jni.h"
namespace webrtc {
@@ -18,17 +19,23 @@
: j_logging_(env, j_logging) {}
JNILogSink::~JNILogSink() = default;
+void JNILogSink::OnLogMessage(const std::string& msg) {
+ RTC_DCHECK_NOTREACHED();
+}
+
void JNILogSink::OnLogMessage(const std::string& msg,
rtc::LoggingSeverity severity,
const char* tag) {
- JNIEnv* env = AttachCurrentThreadIfNeeded();
- Java_JNILogging_logToInjectable(env, j_logging_, NativeToJavaString(env, msg),
- NativeToJavaInteger(env, severity),
- NativeToJavaString(env, tag));
+ OnLogMessage(absl::string_view{msg}, severity, tag);
}
-void JNILogSink::OnLogMessage(const std::string& msg) {
- RTC_DCHECK_NOTREACHED();
+void JNILogSink::OnLogMessage(absl::string_view msg,
+ rtc::LoggingSeverity severity,
+ const char* tag) {
+ JNIEnv* env = AttachCurrentThreadIfNeeded();
+ Java_JNILogging_logToInjectable(
+ env, j_logging_, NativeToJavaString(env, std::string(msg)),
+ NativeToJavaInteger(env, severity), NativeToJavaString(env, tag));
}
} // namespace jni
diff --git a/sdk/android/src/jni/logging/log_sink.h b/sdk/android/src/jni/logging/log_sink.h
index e48b88d..8e681ac 100644
--- a/sdk/android/src/jni/logging/log_sink.h
+++ b/sdk/android/src/jni/logging/log_sink.h
@@ -12,6 +12,7 @@
#include <string>
+#include "absl/strings/string_view.h"
#include "rtc_base/logging.h"
#include "sdk/android/native_api/jni/java_types.h"
#include "sdk/android/src/jni/jni_helpers.h"
@@ -24,10 +25,13 @@
JNILogSink(JNIEnv* env, const JavaRef<jobject>& j_logging);
~JNILogSink() override;
+ void OnLogMessage(const std::string& msg) override;
void OnLogMessage(const std::string& msg,
rtc::LoggingSeverity severity,
const char* tag) override;
- void OnLogMessage(const std::string& msg) override;
+ void OnLogMessage(absl::string_view msg,
+ rtc::LoggingSeverity severity,
+ const char* tag) override;
private:
const ScopedJavaGlobalRef<jobject> j_logging_;
diff --git a/sdk/objc/api/logging/RTCCallbackLogger.mm b/sdk/objc/api/logging/RTCCallbackLogger.mm
index 12cedd6..90bb8b0 100644
--- a/sdk/objc/api/logging/RTCCallbackLogger.mm
+++ b/sdk/objc/api/logging/RTCCallbackLogger.mm
@@ -10,8 +10,11 @@
#import "RTCCallbackLogger.h"
+#import "helpers/NSString+StdString.h"
+
#include <memory>
+#include "absl/strings/string_view.h"
#include "rtc_base/checks.h"
#include "rtc_base/log_sinks.h"
#include "rtc_base/logging.h"
@@ -21,9 +24,13 @@
CallbackLogSink(RTCCallbackLoggerMessageHandler callbackHandler)
: callback_handler_(callbackHandler) {}
- void OnLogMessage(const std::string &message) override {
+ void OnLogMessage(const std::string& message) override {
+ OnLogMessage(absl::string_view(message));
+ }
+
+ void OnLogMessage(absl::string_view message) override {
if (callback_handler_) {
- callback_handler_([NSString stringWithUTF8String:message.c_str()]);
+ callback_handler_([NSString stringForAbslStringView:message]);
}
}
@@ -38,10 +45,10 @@
void OnLogMessage(const std::string& message) override { RTC_DCHECK_NOTREACHED(); }
- void OnLogMessage(const std::string& message, rtc::LoggingSeverity severity) override {
+ void OnLogMessage(absl::string_view message, rtc::LoggingSeverity severity) override {
if (callback_handler_) {
RTCLoggingSeverity loggingSeverity = NativeSeverityToObjcSeverity(severity);
- callback_handler_([NSString stringWithUTF8String:message.c_str()], loggingSeverity);
+ callback_handler_([NSString stringForAbslStringView:message], loggingSeverity);
}
}
diff --git a/sdk/objc/helpers/NSString+StdString.h b/sdk/objc/helpers/NSString+StdString.h
index 7f51a9f..b0324e8 100644
--- a/sdk/objc/helpers/NSString+StdString.h
+++ b/sdk/objc/helpers/NSString+StdString.h
@@ -12,6 +12,8 @@
#include <string>
+#include "absl/strings/string_view.h"
+
NS_ASSUME_NONNULL_BEGIN
@interface NSString (StdString)
@@ -23,4 +25,10 @@
@end
+@interface NSString (AbslStringView)
+
++ (NSString *)stringForAbslStringView:(const absl::string_view)abslStringView;
+
+@end
+
NS_ASSUME_NONNULL_END
diff --git a/sdk/objc/helpers/NSString+StdString.mm b/sdk/objc/helpers/NSString+StdString.mm
index 3210ff0..c98432c 100644
--- a/sdk/objc/helpers/NSString+StdString.mm
+++ b/sdk/objc/helpers/NSString+StdString.mm
@@ -10,6 +10,8 @@
#import "NSString+StdString.h"
+#include "absl/strings/string_view.h"
+
@implementation NSString (StdString)
- (std::string)stdString {
@@ -31,3 +33,13 @@
}
@end
+
+@implementation NSString (AbslStringView)
+
++ (NSString *)stringForAbslStringView:(const absl::string_view)abslStringView {
+ return [[NSString alloc] initWithBytes:abslStringView.data()
+ length:abslStringView.length()
+ encoding:NSUTF8StringEncoding];
+}
+
+@end