Handle staging buffer map failure on Metal.

BUG=dawn:108

Change-Id: Iae1331e179d112d5b93327e7e44f6a5e870557e7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/9882
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
diff --git a/src/dawn_native/metal/StagingBufferMTL.mm b/src/dawn_native/metal/StagingBufferMTL.mm
index f03a769..286a719 100644
--- a/src/dawn_native/metal/StagingBufferMTL.mm
+++ b/src/dawn_native/metal/StagingBufferMTL.mm
@@ -25,7 +25,16 @@
         const size_t bufferSize = GetSize();
         mBuffer = [mDevice->GetMTLDevice() newBufferWithLength:bufferSize
                                                        options:MTLResourceStorageModeShared];
+
+        if (mBuffer == nil) {
+            return DAWN_CONTEXT_LOST_ERROR("Unable to allocate buffer.");
+        }
+
         mMappedPointer = [mBuffer contents];
+        if (mMappedPointer == nullptr) {
+            return DAWN_CONTEXT_LOST_ERROR("Unable to map staging buffer.");
+        }
+
         return {};
     }