Fix backend Device leak in dawn_end2end_tests harness with the wire

Bug: dawn:158
Change-Id: I248ba66864d03c3366fc077fd89824a1233a230e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/7520
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
diff --git a/src/tests/DawnTest.cpp b/src/tests/DawnTest.cpp
index e3752be..9c9ab28 100644
--- a/src/tests/DawnTest.cpp
+++ b/src/tests/DawnTest.cpp
@@ -203,6 +203,12 @@
     swapchain = dawn::SwapChain();
     device = dawn::Device();
 
+    mWireClient = nullptr;
+    mWireServer = nullptr;
+    if (gTestEnv->UsesWire()) {
+        backendProcs.deviceRelease(backendDevice);
+    }
+
     dawnSetProcs(nullptr);
 }
 
@@ -301,7 +307,6 @@
 
     mPCIInfo = backendAdapter.GetPCIInfo();
 
-    DawnDevice backendDevice;
     const char* forceEnabledWorkaround = GetParam().forceEnabledWorkaround;
     if (forceEnabledWorkaround != nullptr) {
         ASSERT(gTestEnv->GetInstance()->GetToggleInfo(forceEnabledWorkaround) != nullptr);
@@ -311,7 +316,7 @@
         backendDevice = backendAdapter.CreateDevice(nullptr);
     }
 
-    DawnProcTable backendProcs = dawn_native::GetProcs();
+    backendProcs = dawn_native::GetProcs();
 
     // Get the test window and create the device using it (esp. for OpenGL)
     GLFWwindow* testWindow = gTestEnv->GetWindowForBackend(backendType);
diff --git a/src/tests/DawnTest.h b/src/tests/DawnTest.h
index 591bd5c..e31ec2e 100644
--- a/src/tests/DawnTest.h
+++ b/src/tests/DawnTest.h
@@ -157,6 +157,9 @@
     dawn::Queue queue;
     dawn::SwapChain swapchain;
 
+    DawnProcTable backendProcs = {};
+    DawnDevice backendDevice = nullptr;
+
     // Helper methods to implement the EXPECT_ macros
     std::ostringstream& AddBufferExpectation(const char* file,
                                              int line,