[dawn][metal] Fix or triage all DAWN_UNSAFE_TODOs

Bug: 439062058, 532554331, 534203108, 501491697, 532946455, 524406299
Change-Id: Iadcaba91b3ff88a8d6659dd599a88d9435c06b33
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/323895
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/native/metal/BufferMTL.mm b/src/dawn/native/metal/BufferMTL.mm
index 458a634..163d6c3 100644
--- a/src/dawn/native/metal/BufferMTL.mm
+++ b/src/dawn/native/metal/BufferMTL.mm
@@ -210,6 +210,7 @@
     // The real mapped pointer is never returned for zero sized buffers. MappedAtCreation buffers
     // are initialized in BufferBase already.
     if (NeedsInitialization() && GetSize() > 0 && newState == BufferState::Mapped) {
+        // TODO(https://crbug.com/501491697): Spanify GetMappedPointerImpl.
         DAWN_UNSAFE_TODO(std::memset(GetMappedPointerImpl(), 0, GetAllocatedSize()));
         GetDevice()->IncrementLazyClearCountForTesting();
         SetInitialized(true);
diff --git a/src/dawn/native/metal/CommandBufferMTL.mm b/src/dawn/native/metal/CommandBufferMTL.mm
index 86b047d..c7dd4dc 100644
--- a/src/dawn/native/metal/CommandBufferMTL.mm
+++ b/src/dawn/native/metal/CommandBufferMTL.mm
@@ -637,6 +637,8 @@
         DAWN_ASSERT(size <= sizeof(uint32_t) * (kMaxImmediateBlockSize - offset));
         // Copy data to all affected shader stages
         for (auto stage : IterateStages(stages)) {
+            // TODO(https://crbug.com/532946455): Spanify ImmediateTracker.
+            // TODO(https://crbug.com/524406299): Use Span::CopyFrom.
             DAWN_UNSAFE_TODO(std::memcpy(&mImmediateBlockContent[stage][offset], data, size));
         }
         dirtyStages |= stages;
@@ -1548,6 +1550,7 @@
                 Buffer* dstBuffer = ToBackend(write->buffer.Get());
                 Device* device = ToBackend(GetDevice());
 
+                // TODO(https://crbug.com/534203108): Spanify WithUploadReservation.
                 DAWN_TRY(device->GetDynamicUploader()->WithUploadReservation(
                     data.size(), kCopyBufferToBufferOffsetAlignment,
                     [&](UploadReservation reservation) -> MaybeError {
diff --git a/src/dawn/native/metal/PhysicalDeviceMTL.mm b/src/dawn/native/metal/PhysicalDeviceMTL.mm
index c236051..6ac2615 100644
--- a/src/dawn/native/metal/PhysicalDeviceMTL.mm
+++ b/src/dawn/native/metal/PhysicalDeviceMTL.mm
@@ -74,9 +74,9 @@
 // Find vendor ID from MTLDevice name.
 MaybeError GetVendorIdFromVendors(id<MTLDevice> device, PCIIDs* ids) {
     uint32_t vendorId = 0;
-    const char* deviceName = [device.name UTF8String];
+    std::string_view deviceName = [device.name UTF8String];
     for (const auto& it : kVendors) {
-        if (DAWN_UNSAFE_TODO(strstr(deviceName, it.trademark)) != nullptr) {
+        if (deviceName.find(it.trademark) != std::string_view::npos) {
             vendorId = it.vendorId;
             break;
         }
diff --git a/src/dawn/native/metal/QueueMTL.mm b/src/dawn/native/metal/QueueMTL.mm
index a600f24..0b46647 100644
--- a/src/dawn/native/metal/QueueMTL.mm
+++ b/src/dawn/native/metal/QueueMTL.mm
@@ -276,7 +276,7 @@
         }
         TRACE_EVENT_END0(GetDevice()->GetPlatform(), Recording, "CommandBufferMTL::FillCommands");
 
-        DAWN_UNSAFE_TODO(DAWN_TRY(SubmitPendingCommandBuffer()));
+        DAWN_TRY(SubmitPendingCommandBuffer());
 
         return {};
     }
diff --git a/src/dawn/native/metal/TextureMTL.mm b/src/dawn/native/metal/TextureMTL.mm
index 5bd3e8b..b13a812 100644
--- a/src/dawn/native/metal/TextureMTL.mm
+++ b/src/dawn/native/metal/TextureMTL.mm
@@ -685,6 +685,7 @@
                 blockInfo.ToBytes(largestMipSize.width * largestMipSize.height);
             uint64_t uploadSize = blockInfo.ToBytes(uploadBlocks);
 
+            // TODO(https://crbug.com/534203108): Spanify WithUploadReservation.
             DAWN_TRY(device->GetDynamicUploader()->WithUploadReservation(
                 uploadSize, blockInfo.byteSize, [&](UploadReservation reservation) -> MaybeError {
                     DAWN_UNSAFE_TODO(memset(reservation.mappedPointer, clearColor, uploadSize));