Fix unittests which construct Instance incorrectly

Several unittests called native::InstanceBase::Create instead of
native::APICreateInstance. Doing so meant the external refcount and the
internal refcount got out of sync such that the internal refcount
reached 0 before the external refcount, and WillDropLastExternalRef was
never called.

Bug: dawn:1987
Change-Id: I1b16fbfeb5995604df0dbbcbcf656b3f17a61c1c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/150584
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/dawn/tests/unittests/FeatureTests.cpp b/src/dawn/tests/unittests/FeatureTests.cpp
index 99c9e97..2586099 100644
--- a/src/dawn/tests/unittests/FeatureTests.cpp
+++ b/src/dawn/tests/unittests/FeatureTests.cpp
@@ -27,7 +27,7 @@
   public:
     FeatureTests()
         : testing::Test(),
-          mInstanceBase(native::InstanceBase::Create()),
+          mInstanceBase(native::APICreateInstance(nullptr)),
           mPhysicalDevice(mInstanceBase.Get()),
           mUnsafePhysicalDevice(mInstanceBase.Get()),
           mAdapterBase(&mPhysicalDevice,
diff --git a/src/dawn/tests/unittests/GetProcAddressTests.cpp b/src/dawn/tests/unittests/GetProcAddressTests.cpp
index 45339f6..92c76c1 100644
--- a/src/dawn/tests/unittests/GetProcAddressTests.cpp
+++ b/src/dawn/tests/unittests/GetProcAddressTests.cpp
@@ -56,7 +56,7 @@
   public:
     GetProcAddressTests()
         : testing::TestWithParam<DawnFlavor>(),
-          mNativeInstance(native::InstanceBase::Create()),
+          mNativeInstance(native::APICreateInstance(nullptr)),
           mAdapterBase(AcquireRef(new native::null::PhysicalDevice(mNativeInstance.Get())),
                        native::FeatureLevel::Core,
                        native::TogglesState(native::ToggleStage::Adapter),
diff --git a/src/dawn/tests/unittests/PerThreadProcTests.cpp b/src/dawn/tests/unittests/PerThreadProcTests.cpp
index d1372c7..4b18962 100644
--- a/src/dawn/tests/unittests/PerThreadProcTests.cpp
+++ b/src/dawn/tests/unittests/PerThreadProcTests.cpp
@@ -29,7 +29,7 @@
 class PerThreadProcTests : public testing::Test {
   public:
     PerThreadProcTests()
-        : mNativeInstance(native::InstanceBase::Create()),
+        : mNativeInstance(native::APICreateInstance(nullptr)),
           mAdapterBase(AcquireRef(new native::null::PhysicalDevice(mNativeInstance.Get())),
                        native::FeatureLevel::Core,
                        native::TogglesState(native::ToggleStage::Adapter),
diff --git a/src/dawn/tests/unittests/native/mocks/DeviceMock.cpp b/src/dawn/tests/unittests/native/mocks/DeviceMock.cpp
index 62c4ccb..ce0cf2e 100644
--- a/src/dawn/tests/unittests/native/mocks/DeviceMock.cpp
+++ b/src/dawn/tests/unittests/native/mocks/DeviceMock.cpp
@@ -14,6 +14,7 @@
 
 #include "dawn/tests/unittests/native/mocks/DeviceMock.h"
 
+#include "dawn/native/Instance.h"
 #include "dawn/tests/unittests/native/mocks/BindGroupLayoutMock.h"
 #include "dawn/tests/unittests/native/mocks/BindGroupMock.h"
 #include "dawn/tests/unittests/native/mocks/BufferMock.h"
@@ -34,7 +35,7 @@
 using ::testing::WithArgs;
 
 DeviceMock::DeviceMock() {
-    mInstance = InstanceBase::Create();
+    mInstance = APICreateInstance(nullptr);
 
     // Set all default creation functions to return nice mock objects.
     ON_CALL(*this, CreateBindGroupImpl)