Add absl::string_view to openscreen

This PR does the work of adding the absl::string_view class
to our code base, with suggested usage from the Abseil team,
found here:

https://abseil.io/tips/1

Bug: openscreen:23
Change-Id: I43fd60e2574f8c116946a52a10a422a15487e266
Reviewed-on: https://chromium-review.googlesource.com/c/1422681
Commit-Queue: Jordan Bayles <jophba@chromium.org>
Reviewed-by: mark a. foltz <mfoltz@chromium.org>
diff --git a/platform/api/logging.h b/platform/api/logging.h
index c323810..5a2e237 100644
--- a/platform/api/logging.h
+++ b/platform/api/logging.h
@@ -7,6 +7,8 @@
 
 #include <sstream>
 
+#include "third_party/abseil/src/absl/strings/string_view.h"
+
 namespace openscreen {
 namespace platform {
 
@@ -27,9 +29,9 @@
 void SetLogLevel(LogLevel level, int verbose_level = 0);
 void LogWithLevel(LogLevel level,
                   int verbose_level,
-                  const char* file,
+                  absl::string_view file,
                   int line,
-                  const char* msg);
+                  absl::string_view msg);
 void Break();
 //
 // END PLATFORM IMPLEMENTATION
@@ -39,7 +41,10 @@
 // base/logging.h.
 class LogMessage {
  public:
-  LogMessage(LogLevel level, int verbose_level, const char* file, int line);
+  LogMessage(LogLevel level,
+             int verbose_level,
+             absl::string_view file,
+             int line);
   ~LogMessage();
 
   std::ostream& stream() { return stream_; }
@@ -47,7 +52,11 @@
  private:
   const LogLevel level_;
   const int verbose_level_;
-  const char* const file_;
+
+  // The file here comes from the __FILE__ macro, which should persist while
+  // we are doing the logging. Hence, keeping it unmanaged here and not
+  // creating a copy should be safe.
+  absl::string_view const file_;
   const int line_;
   std::ostringstream stream_;
 };