[dawn] Replace `absl::string_view` with `std::string_view`

Bug: 343500108
Change-Id: Ib183ce5933bb5b2581115236ac37cb533489dcc6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/239695
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
diff --git a/generator/templates/dawn/native/api_structs.h b/generator/templates/dawn/native/api_structs.h
index 35d568f..fad36fc 100644
--- a/generator/templates/dawn/native/api_structs.h
+++ b/generator/templates/dawn/native/api_structs.h
@@ -32,7 +32,6 @@
 #ifndef {{DIR}}_{{namespace.upper()}}_STRUCTS_H_
 #define {{DIR}}_{{namespace.upper()}}_STRUCTS_H_
 
-#include "absl/strings/string_view.h"
 {% set api = metadata.api.lower() %}
 {% set CAPI = metadata.c_prefix %}
 #include "dawn/{{api}}_cpp.h"
@@ -105,19 +104,6 @@
         // Equality operators, mostly for testing. Note that this tests
         // strict pointer-pointer equality if the struct contains member pointers.
         bool operator==(const StringView& rhs) const;
-
-        #ifndef ABSL_USES_STD_STRING_VIEW
-        // NOLINTNEXTLINE(runtime/explicit) allow implicit conversion
-        operator absl::string_view() const {
-            if (this->length == wgpu::kStrlen) {
-                if (IsUndefined()) {
-                    return {};
-                }
-                return {this->data};
-            }
-            return {this->data, this->length};
-        }
-        #endif
     };
 
     {% for type in by_category["structure"] if type.name.get() not in SpecialStructures %}
diff --git a/src/dawn/native/BUILD.gn b/src/dawn/native/BUILD.gn
index ac0a7fb..6dd278e 100644
--- a/src/dawn/native/BUILD.gn
+++ b/src/dawn/native/BUILD.gn
@@ -68,7 +68,6 @@
       "${dawn_root}/third_party/gn/abseil-cpp:inlined_vector",
       "${dawn_root}/third_party/gn/abseil-cpp:span",
       "${dawn_root}/third_party/gn/abseil-cpp:str_format",
-      "${dawn_root}/third_party/gn/abseil-cpp:string_view",
       "${dawn_root}/third_party/gn/abseil-cpp:strings",
     ]
   }
diff --git a/src/dawn/native/Pipeline.cpp b/src/dawn/native/Pipeline.cpp
index 2a898eb..18df938 100644
--- a/src/dawn/native/Pipeline.cpp
+++ b/src/dawn/native/Pipeline.cpp
@@ -28,10 +28,10 @@
 #include "dawn/native/Pipeline.h"
 
 #include <algorithm>
+#include <string_view>
 #include <utility>
 
 #include "absl/container/flat_hash_set.h"
-#include "absl/strings/string_view.h"
 #include "dawn/common/Enumerator.h"
 #include "dawn/native/BindGroupLayout.h"
 #include "dawn/native/Device.h"
@@ -115,7 +115,7 @@
     // Keep an initialized constants sets to handle duplicate initialization cases
     absl::flat_hash_set<std::string_view> stageInitializedConstantIdentifiers;
     for (uint32_t i = 0; i < constantCount; i++) {
-        absl::string_view key = {constants[i].key};
+        std::string_view key = {constants[i].key};
         double value = constants[i].value;
 
         DAWN_INVALID_IF(!metadata.overrides.contains(key),
diff --git a/src/dawn/native/ShaderModule.cpp b/src/dawn/native/ShaderModule.cpp
index cce91b8..bf2df9a 100644
--- a/src/dawn/native/ShaderModule.cpp
+++ b/src/dawn/native/ShaderModule.cpp
@@ -31,6 +31,7 @@
 #include <limits>
 #include <set>
 #include <sstream>
+#include <string_view>
 #include <utility>
 
 #include "dawn/common/Constants.h"
@@ -1574,7 +1575,7 @@
     return ObjectType::ShaderModule;
 }
 
-bool ShaderModuleBase::HasEntryPoint(absl::string_view entryPoint) const {
+bool ShaderModuleBase::HasEntryPoint(std::string_view entryPoint) const {
     return mEntryPoints.contains(entryPoint);
 }
 
@@ -1595,7 +1596,7 @@
     return mStrictMath;
 }
 
-const EntryPointMetadata& ShaderModuleBase::GetEntryPoint(absl::string_view entryPoint) const {
+const EntryPointMetadata& ShaderModuleBase::GetEntryPoint(std::string_view entryPoint) const {
     DAWN_ASSERT(HasEntryPoint(entryPoint));
     return *mEntryPoints.at(entryPoint);
 }
diff --git a/src/dawn/native/ShaderModule.h b/src/dawn/native/ShaderModule.h
index 868d212..2ef6802 100644
--- a/src/dawn/native/ShaderModule.h
+++ b/src/dawn/native/ShaderModule.h
@@ -33,13 +33,13 @@
 #include <map>
 #include <memory>
 #include <string>
+#include <string_view>
 #include <utility>
 #include <variant>
 #include <vector>
 
 #include "absl/container/flat_hash_map.h"
 #include "absl/container/flat_hash_set.h"
-#include "absl/strings/string_view.h"
 #include "dawn/common/Constants.h"
 #include "dawn/common/ContentLessObjectCacheable.h"
 #include "dawn/common/MutexProtected.h"
@@ -350,7 +350,7 @@
     ObjectType GetType() const override;
 
     // Return true iff the program has an entrypoint called `entryPoint`.
-    bool HasEntryPoint(absl::string_view entryPoint) const;
+    bool HasEntryPoint(std::string_view entryPoint) const;
 
     // Return the number of entry points for a stage.
     size_t GetEntryPointCount(SingleShaderStage stage) const { return mEntryPointCounts[stage]; }
@@ -361,7 +361,7 @@
 
     // Return the metadata for the given `entryPoint`. HasEntryPoint with the same argument
     // must be true.
-    const EntryPointMetadata& GetEntryPoint(absl::string_view entryPoint) const;
+    const EntryPointMetadata& GetEntryPoint(std::string_view entryPoint) const;
 
     // Functions necessary for the unordered_set<ShaderModuleBase*>-based cache.
     size_t ComputeContentHash() override;
diff --git a/src/dawn/native/webgpu_absl_format.cpp b/src/dawn/native/webgpu_absl_format.cpp
index 559f776..44ff59d 100644
--- a/src/dawn/native/webgpu_absl_format.cpp
+++ b/src/dawn/native/webgpu_absl_format.cpp
@@ -28,6 +28,7 @@
 #include "dawn/native/webgpu_absl_format.h"
 
 #include <string>
+#include <string_view>
 #include <vector>
 
 #include "dawn/common/MatchVariant.h"
@@ -701,7 +702,7 @@
     }
 
     s->Append("\"");
-    s->Append(absl::string_view(value));
+    s->Append(std::string_view(value));
     s->Append("\"");
     return {true};
 }
diff --git a/src/dawn/tests/unittests/validation/PixelLocalStorageTests.cpp b/src/dawn/tests/unittests/validation/PixelLocalStorageTests.cpp
index ebd7356..058c7da 100644
--- a/src/dawn/tests/unittests/validation/PixelLocalStorageTests.cpp
+++ b/src/dawn/tests/unittests/validation/PixelLocalStorageTests.cpp
@@ -26,6 +26,7 @@
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 #include <string>
+#include <string_view>
 #include <vector>
 
 #include "dawn/common/NonMovable.h"
@@ -360,14 +361,12 @@
         }
     }
 
-    void TestFragmentAndLayoutCompat(const PLSSpec& layoutSpec,
-                                     absl::string_view fs,
-                                     bool success) {
+    void TestFragmentAndLayoutCompat(const PLSSpec& layoutSpec, std::string_view fs, bool success) {
         TestFragmentAndLayoutCompat(MakePipelineLayout(layoutSpec), fs, success);
     }
 
     void TestFragmentAndLayoutCompat(const wgpu::PipelineLayout& layout,
-                                     absl::string_view fs,
+                                     std::string_view fs,
                                      bool success) {
         wgpu::ShaderModule fsModule = utils::CreateShaderModule(device, fs.data());
         wgpu::ShaderModule vsModule = utils::CreateShaderModule(device, R"(
diff --git a/src/dawn/utils/BUILD.gn b/src/dawn/utils/BUILD.gn
index ad2baee..d009127 100644
--- a/src/dawn/utils/BUILD.gn
+++ b/src/dawn/utils/BUILD.gn
@@ -143,7 +143,6 @@
       "${dawn_root}/third_party/gn/abseil-cpp:flat_hash_map",
       "${dawn_root}/third_party/gn/abseil-cpp:span",
       "${dawn_root}/third_party/gn/abseil-cpp:str_format",
-      "${dawn_root}/third_party/gn/abseil-cpp:string_view",
       "${dawn_root}/third_party/gn/abseil-cpp:strings",
     ]
   }
diff --git a/src/dawn/utils/CMakeLists.txt b/src/dawn/utils/CMakeLists.txt
index 5eb7120..bc77549 100644
--- a/src/dawn/utils/CMakeLists.txt
+++ b/src/dawn/utils/CMakeLists.txt
@@ -134,7 +134,6 @@
     absl::span
   PRIVATE_DEPENDS
     absl::strings
-    absl::string_view
     absl::str_format_internal
     absl::flat_hash_map
     ${private_system_depends}
diff --git a/src/dawn/utils/CommandLineParser.cpp b/src/dawn/utils/CommandLineParser.cpp
index b891875..eca9e03 100644
--- a/src/dawn/utils/CommandLineParser.cpp
+++ b/src/dawn/utils/CommandLineParser.cpp
@@ -38,7 +38,7 @@
 
 // OptionBase
 
-CommandLineParser::OptionBase::OptionBase(absl::string_view name, absl::string_view desc)
+CommandLineParser::OptionBase::OptionBase(std::string_view name, std::string_view desc)
     : mName(name), mDescription(desc), mParameter("value") {}
 
 CommandLineParser::OptionBase::~OptionBase() = default;
@@ -64,7 +64,7 @@
 }
 
 CommandLineParser::OptionBase::ParseResult CommandLineParser::OptionBase::Parse(
-    absl::Span<const absl::string_view> args) {
+    absl::Span<const std::string_view> args) {
     auto result = ParseImpl(args);
     if (result.success) {
         mSet = true;
@@ -74,7 +74,7 @@
 
 // BoolOption
 
-CommandLineParser::BoolOption::BoolOption(absl::string_view name, absl::string_view desc)
+CommandLineParser::BoolOption::BoolOption(std::string_view name, std::string_view desc)
     : Option(name, desc) {}
 
 CommandLineParser::BoolOption::~BoolOption() = default;
@@ -88,7 +88,7 @@
 }
 
 CommandLineParser::OptionBase::ParseResult CommandLineParser::BoolOption::ParseImpl(
-    absl::Span<const absl::string_view> args) {
+    absl::Span<const std::string_view> args) {
     // Explicit true
     if (!args.empty() && args.front() == "true") {
         if (IsSet()) {
@@ -121,7 +121,7 @@
 
 // StringOption
 
-CommandLineParser::StringOption::StringOption(absl::string_view name, absl::string_view desc)
+CommandLineParser::StringOption::StringOption(std::string_view name, std::string_view desc)
     : Option(name, desc) {}
 
 CommandLineParser::StringOption::~StringOption() = default;
@@ -131,7 +131,7 @@
 }
 
 CommandLineParser::OptionBase::ParseResult CommandLineParser::StringOption::ParseImpl(
-    absl::Span<const absl::string_view> args) {
+    absl::Span<const std::string_view> args) {
     if (IsSet()) {
         return {false, args, "cannot be set multiple times"};
     }
@@ -146,8 +146,7 @@
 
 // StringListOption
 
-CommandLineParser::StringListOption::StringListOption(absl::string_view name,
-                                                      absl::string_view desc)
+CommandLineParser::StringListOption::StringListOption(std::string_view name, std::string_view desc)
     : Option(name, desc) {}
 
 CommandLineParser::StringListOption::~StringListOption() = default;
@@ -165,12 +164,12 @@
 }
 
 CommandLineParser::OptionBase::ParseResult CommandLineParser::StringListOption::ParseImpl(
-    absl::Span<const absl::string_view> args) {
+    absl::Span<const std::string_view> args) {
     if (args.empty()) {
         return {false, args, "expected a value"};
     }
 
-    for (absl::string_view s : absl::StrSplit(args.front(), ",")) {
+    for (std::string_view s : absl::StrSplit(args.front(), ",")) {
         mValue.push_back(std::string{s});
     }
     return {true, args.subspan(1)};
@@ -178,24 +177,24 @@
 
 // CommandLineParser
 
-CommandLineParser::BoolOption& CommandLineParser::AddBool(absl::string_view name,
-                                                          absl::string_view desc) {
+CommandLineParser::BoolOption& CommandLineParser::AddBool(std::string_view name,
+                                                          std::string_view desc) {
     return AddOption(std::make_unique<BoolOption>(name, desc));
 }
 
-CommandLineParser::StringOption& CommandLineParser::AddString(absl::string_view name,
-                                                              absl::string_view desc) {
+CommandLineParser::StringOption& CommandLineParser::AddString(std::string_view name,
+                                                              std::string_view desc) {
     return AddOption(std::make_unique<StringOption>(name, desc));
 }
 
-CommandLineParser::StringListOption& CommandLineParser::AddStringList(absl::string_view name,
-                                                                      absl::string_view desc) {
+CommandLineParser::StringListOption& CommandLineParser::AddStringList(std::string_view name,
+                                                                      std::string_view desc) {
     return AddOption(std::make_unique<StringListOption>(name, desc));
 }
 
 // static
-std::string CommandLineParser::JoinConversionNames(absl::Span<const absl::string_view> names,
-                                                   absl::string_view separator) {
+std::string CommandLineParser::JoinConversionNames(absl::Span<const std::string_view> names,
+                                                   std::string_view separator) {
     return absl::StrJoin(names, separator);
 }
 
@@ -206,7 +205,7 @@
 // static
 const CommandLineParser::ParseOptions CommandLineParser::kDefaultParseOptions = {};
 
-CommandLineParser::ParseResult CommandLineParser::Parse(absl::Span<const absl::string_view> args,
+CommandLineParser::ParseResult CommandLineParser::Parse(absl::Span<const std::string_view> args,
                                                         const ParseOptions& parseOptions) {
     // Build the map of name to option.
     absl::flat_hash_map<std::string, OptionBase*> nameToOption;
@@ -293,7 +292,7 @@
 
 CommandLineParser::ParseResult CommandLineParser::Parse(const std::vector<std::string>& args,
                                                         const ParseOptions& parseOptions) {
-    std::vector<absl::string_view> viewArgs;
+    std::vector<std::string_view> viewArgs;
     for (const auto& arg : args) {
         viewArgs.push_back(arg);
     }
@@ -304,7 +303,7 @@
 CommandLineParser::ParseResult CommandLineParser::Parse(int argc,
                                                         const char** argv,
                                                         const ParseOptions& parseOptions) {
-    std::vector<absl::string_view> args;
+    std::vector<std::string_view> args;
     for (int i = 1; i < argc; i++) {
         args.push_back(argv[i]);
     }
@@ -314,7 +313,7 @@
 
 void CommandLineParser::PrintHelp(std::ostream& s) {
     // Sort options in alphabetical order using a trick that std::tuple is sorted lexicographically.
-    std::vector<std::tuple<absl::string_view, OptionBase*>> sortedOptions;
+    std::vector<std::tuple<std::string_view, OptionBase*>> sortedOptions;
     for (auto& option : mOptions) {
         sortedOptions.emplace_back(option->GetName(), option.get());
     }
diff --git a/src/dawn/utils/CommandLineParser.h b/src/dawn/utils/CommandLineParser.h
index 461c19f..d386e41 100644
--- a/src/dawn/utils/CommandLineParser.h
+++ b/src/dawn/utils/CommandLineParser.h
@@ -31,10 +31,10 @@
 #include <memory>
 #include <ostream>
 #include <string>
+#include <string_view>
 #include <utility>
 #include <vector>
 
-#include "absl/strings/string_view.h"
 #include "absl/types/span.h"  // TODO(343500108): Use std::span when we have C++20.
 #include "dawn/common/Assert.h"
 #include "dawn/common/NonMovable.h"
@@ -80,7 +80,7 @@
     // The base class for all options to let them interact with the parser.
     class OptionBase : NonMovable {
       public:
-        OptionBase(absl::string_view name, absl::string_view desc);
+        OptionBase(std::string_view name, std::string_view desc);
         virtual ~OptionBase();
 
         const std::string& GetName() const;
@@ -92,13 +92,13 @@
 
         struct ParseResult {
             bool success;
-            absl::Span<const absl::string_view> remainingArgs = {};
+            absl::Span<const std::string_view> remainingArgs = {};
             std::string errorMessage = {};
         };
-        ParseResult Parse(absl::Span<const absl::string_view> args);
+        ParseResult Parse(absl::Span<const std::string_view> args);
 
       protected:
-        virtual ParseResult ParseImpl(absl::Span<const absl::string_view> args) = 0;
+        virtual ParseResult ParseImpl(absl::Span<const std::string_view> args) = 0;
 
         bool mSet = false;
         std::string mName;
@@ -123,47 +123,47 @@
     // Can be set multiple times on the command line if not using the explicit true/false version.
     class BoolOption : public Option<BoolOption> {
       public:
-        BoolOption(absl::string_view name, absl::string_view desc);
+        BoolOption(std::string_view name, std::string_view desc);
         ~BoolOption() override;
 
         bool GetValue() const;
         std::string GetParameter() const override;
 
       private:
-        ParseResult ParseImpl(absl::Span<const absl::string_view> args) override;
+        ParseResult ParseImpl(absl::Span<const std::string_view> args) override;
         bool mValue = false;
     };
-    BoolOption& AddBool(absl::string_view name, absl::string_view desc = {});
+    BoolOption& AddBool(std::string_view name, std::string_view desc = {});
 
     // An option returning a string. Defaults to the empty string.
     class StringOption : public Option<StringOption> {
       public:
-        StringOption(absl::string_view name, absl::string_view desc);
+        StringOption(std::string_view name, std::string_view desc);
         ~StringOption() override;
 
         std::string GetValue() const;
 
       private:
-        ParseResult ParseImpl(absl::Span<const absl::string_view> args) override;
+        ParseResult ParseImpl(absl::Span<const std::string_view> args) override;
         std::string mValue;
     };
-    StringOption& AddString(absl::string_view name, absl::string_view desc = {});
+    StringOption& AddString(std::string_view name, std::string_view desc = {});
 
     // An option returning a list of string split from a comma-separated argument, or the argument
     // being set multiple times (or both). Defaults to an empty list.
     class StringListOption : public Option<StringListOption> {
       public:
-        StringListOption(absl::string_view name, absl::string_view desc);
+        StringListOption(std::string_view name, std::string_view desc);
         ~StringListOption() override;
 
         absl::Span<const std::string> GetValue() const;
         std::vector<std::string> GetOwnedValue() const;
 
       private:
-        ParseResult ParseImpl(absl::Span<const absl::string_view> args) override;
+        ParseResult ParseImpl(absl::Span<const std::string_view> args) override;
         std::vector<std::string> mValue;
     };
-    StringListOption& AddStringList(absl::string_view name, absl::string_view desc = {});
+    StringListOption& AddStringList(std::string_view name, std::string_view desc = {});
 
     // An option converting a string name to a value. The default value can be set with .Default().
     //
@@ -171,9 +171,9 @@
     template <typename E>
     class EnumOption : public Option<EnumOption<E>> {
       public:
-        EnumOption(std::vector<std::pair<absl::string_view, E>> conversions,
-                   absl::string_view name,
-                   absl::string_view desc);
+        EnumOption(std::vector<std::pair<std::string_view, E>> conversions,
+                   std::string_view name,
+                   std::string_view desc);
         ~EnumOption() override;
 
         E GetValue() const;
@@ -182,18 +182,18 @@
         EnumOption<E>& Default(E value);
 
       private:
-        std::string JoinNames(absl::string_view separator) const;
-        OptionBase::ParseResult ParseImpl(absl::Span<const absl::string_view> args) override;
+        std::string JoinNames(std::string_view separator) const;
+        OptionBase::ParseResult ParseImpl(absl::Span<const std::string_view> args) override;
         E mValue;
         bool mHasDefault;
-        std::vector<std::pair<absl::string_view, E>> mConversions;
+        std::vector<std::pair<std::string_view, E>> mConversions;
     };
-    static std::string JoinConversionNames(absl::Span<const absl::string_view> names,
-                                           absl::string_view separator);
+    static std::string JoinConversionNames(absl::Span<const std::string_view> names,
+                                           std::string_view separator);
     template <typename E>
-    EnumOption<E>& AddEnum(std::vector<std::pair<absl::string_view, E>> conversions,
-                           absl::string_view name,
-                           absl::string_view desc = {}) {
+    EnumOption<E>& AddEnum(std::vector<std::pair<std::string_view, E>> conversions,
+                           std::string_view name,
+                           std::string_view desc = {}) {
         return AddOption(std::make_unique<EnumOption<E>>(std::move(conversions), name, desc));
     }
 
@@ -212,7 +212,7 @@
     static const ParseOptions kDefaultParseOptions;
 
     // Parse the arguments provided and set the options.
-    ParseResult Parse(absl::Span<const absl::string_view> args,
+    ParseResult Parse(absl::Span<const std::string_view> args,
                       const ParseOptions& parseOptions = kDefaultParseOptions);
 
     // Small wrappers around the previous Parse for ease of use.
@@ -252,9 +252,9 @@
 // EnumOption<E>
 template <typename E>
 CommandLineParser::EnumOption<E>::EnumOption(
-    std::vector<std::pair<absl::string_view, E>> conversions,
-    absl::string_view name,
-    absl::string_view desc)
+    std::vector<std::pair<std::string_view, E>> conversions,
+    std::string_view name,
+    std::string_view desc)
     : Option<EnumOption<E>>(name, desc), mConversions(conversions) {}
 
 template <typename E>
@@ -268,7 +268,7 @@
 
 template <typename E>
 CommandLineParser::OptionBase::ParseResult CommandLineParser::EnumOption<E>::ParseImpl(
-    absl::Span<const absl::string_view> args) {
+    absl::Span<const std::string_view> args) {
     if (this->IsSet()) {
         return {false, args, "cannot be set multiple times"};
     }
@@ -303,8 +303,8 @@
 }
 
 template <typename E>
-std::string CommandLineParser::EnumOption<E>::JoinNames(absl::string_view separator) const {
-    std::vector<absl::string_view> names;
+std::string CommandLineParser::EnumOption<E>::JoinNames(std::string_view separator) const {
+    std::vector<std::string_view> names;
     for (auto conversion : mConversions) {
         names.push_back(conversion.first);
     }