diff --git a/examples/SampleUtils.cpp b/examples/SampleUtils.cpp
index fff8840..47fd05b 100644
--- a/examples/SampleUtils.cpp
+++ b/examples/SampleUtils.cpp
@@ -86,8 +86,8 @@
 
 static GLFWwindow* window = nullptr;
 
-static dawn_wire::WireServer* wireServer = nullptr;
-static dawn_wire::WireClient* wireClient = nullptr;
+static dawn::wire::WireServer* wireServer = nullptr;
+static dawn::wire::WireClient* wireClient = nullptr;
 static utils::TerribleCommandBuffer* c2sBuf = nullptr;
 static utils::TerribleCommandBuffer* s2cBuf = nullptr;
 
@@ -149,18 +149,18 @@
             c2sBuf = new utils::TerribleCommandBuffer();
             s2cBuf = new utils::TerribleCommandBuffer();
 
-            dawn_wire::WireServerDescriptor serverDesc = {};
+            dawn::wire::WireServerDescriptor serverDesc = {};
             serverDesc.procs = &backendProcs;
             serverDesc.serializer = s2cBuf;
 
-            wireServer = new dawn_wire::WireServer(serverDesc);
+            wireServer = new dawn::wire::WireServer(serverDesc);
             c2sBuf->SetHandler(wireServer);
 
-            dawn_wire::WireClientDescriptor clientDesc = {};
+            dawn::wire::WireClientDescriptor clientDesc = {};
             clientDesc.serializer = c2sBuf;
 
-            wireClient = new dawn_wire::WireClient(clientDesc);
-            procs = dawn_wire::client::GetProcs();
+            wireClient = new dawn::wire::WireClient(clientDesc);
+            procs = dawn::wire::client::GetProcs();
             s2cBuf->SetHandler(wireClient);
 
             auto deviceReservation = wireClient->ReserveDevice();
diff --git a/generator/templates/dawn_wire/ObjectType.h b/generator/templates/dawn_wire/ObjectType.h
index e049d37..ce3572e 100644
--- a/generator/templates/dawn_wire/ObjectType.h
+++ b/generator/templates/dawn_wire/ObjectType.h
@@ -17,7 +17,7 @@
 
 #include "common/ityp_array.h"
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     enum class ObjectType : uint32_t {
         {% for type in by_category["object"] %}
@@ -28,7 +28,7 @@
     template <typename T>
     using PerObjectType = ityp::array<ObjectType, T, {{len(by_category["object"])}}>;
 
-} // namespace dawn_wire
+} // namespace dawn::wire
 
 
 #endif  // DAWNWIRE_OBJECTTPYE_AUTOGEN_H_
diff --git a/generator/templates/dawn_wire/WireCmd.cpp b/generator/templates/dawn_wire/WireCmd.cpp
index f463205..9a1490a 100644
--- a/generator/templates/dawn_wire/WireCmd.cpp
+++ b/generator/templates/dawn_wire/WireCmd.cpp
@@ -649,7 +649,7 @@
         }
 {% endmacro %}
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     ObjectHandle::ObjectHandle() = default;
     ObjectHandle::ObjectHandle(ObjectId id, ObjectGeneration generation)
@@ -852,4 +852,4 @@
                                               nullptr, resolver) == WireResult::Success;
     }
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
diff --git a/generator/templates/dawn_wire/WireCmd.h b/generator/templates/dawn_wire/WireCmd.h
index 077dbf4..5ffd639 100644
--- a/generator/templates/dawn_wire/WireCmd.h
+++ b/generator/templates/dawn_wire/WireCmd.h
@@ -21,7 +21,7 @@
 #include "dawn_wire/ObjectType_autogen.h"
 #include "dawn_wire/WireResult.h"
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     using ObjectId = uint32_t;
     using ObjectGeneration = uint32_t;
@@ -133,6 +133,6 @@
         {{write_command_struct(command, True)}}
     {% endfor %}
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 #endif // DAWNWIRE_WIRECMD_AUTOGEN_H_
diff --git a/generator/templates/dawn_wire/client/ApiObjects.h b/generator/templates/dawn_wire/client/ApiObjects.h
index b010ad9..d9d4626 100644
--- a/generator/templates/dawn_wire/client/ApiObjects.h
+++ b/generator/templates/dawn_wire/client/ApiObjects.h
@@ -18,7 +18,7 @@
 #include "dawn_wire/ObjectType_autogen.h"
 #include "dawn_wire/client/ObjectBase.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     template <typename T>
     struct ObjectTypeToTypeEnum {
@@ -48,6 +48,6 @@
         };
 
     {% endfor %}
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_APIOBJECTS_AUTOGEN_H_
diff --git a/generator/templates/dawn_wire/client/ApiProcs.cpp b/generator/templates/dawn_wire/client/ApiProcs.cpp
index fae6cc0..c5b77ef 100644
--- a/generator/templates/dawn_wire/client/ApiProcs.cpp
+++ b/generator/templates/dawn_wire/client/ApiProcs.cpp
@@ -21,7 +21,7 @@
 #include <string>
 #include <vector>
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     //* Outputs an rvalue that's the number of elements a pointer member points to.
     {% macro member_length(member, accessor) -%}
@@ -175,4 +175,4 @@
     const {{Prefix}}ProcTable& GetProcs() {
         return gProcTable;
     }
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/generator/templates/dawn_wire/client/ClientBase.h b/generator/templates/dawn_wire/client/ClientBase.h
index 4b59b4f..d956acc 100644
--- a/generator/templates/dawn_wire/client/ClientBase.h
+++ b/generator/templates/dawn_wire/client/ClientBase.h
@@ -20,7 +20,7 @@
 #include "dawn_wire/client/ApiObjects.h"
 #include "dawn_wire/client/ObjectAllocator.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class ClientBase : public ChunkedCommandHandler, public ObjectIdProvider {
       public:
@@ -69,6 +69,6 @@
         {% endfor %}
     };
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_CLIENTBASE_AUTOGEN_H_
diff --git a/generator/templates/dawn_wire/client/ClientHandlers.cpp b/generator/templates/dawn_wire/client/ClientHandlers.cpp
index 25c0b4f..749152a 100644
--- a/generator/templates/dawn_wire/client/ClientHandlers.cpp
+++ b/generator/templates/dawn_wire/client/ClientHandlers.cpp
@@ -17,7 +17,7 @@
 
 #include <string>
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
     {% for command in cmd_records["return command"] %}
         bool Client::Handle{{command.name.CamelCase()}}(DeserializeBuffer* deserializeBuffer) {
             Return{{command.name.CamelCase()}}Cmd cmd;
@@ -94,4 +94,4 @@
 
         return commands;
     }
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/generator/templates/dawn_wire/server/ServerBase.h b/generator/templates/dawn_wire/server/ServerBase.h
index 46ef629..971da84 100644
--- a/generator/templates/dawn_wire/server/ServerBase.h
+++ b/generator/templates/dawn_wire/server/ServerBase.h
@@ -22,7 +22,7 @@
 #include "dawn_wire/WireDeserializeAllocator.h"
 #include "dawn_wire/server/ObjectStorage.h"
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     class ServerBase : public ChunkedCommandHandler, public ObjectIdResolver {
       public:
@@ -100,6 +100,6 @@
         {% endfor %}
     };
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
 
 #endif  // DAWNWIRE_SERVER_SERVERBASE_H_
diff --git a/generator/templates/dawn_wire/server/ServerDoers.cpp b/generator/templates/dawn_wire/server/ServerDoers.cpp
index 5ccbb5f..ce4854e 100644
--- a/generator/templates/dawn_wire/server/ServerDoers.cpp
+++ b/generator/templates/dawn_wire/server/ServerDoers.cpp
@@ -15,7 +15,7 @@
 #include "common/Assert.h"
 #include "dawn_wire/server/Server.h"
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
     //* Implementation of the command doers
     {% for command in cmd_records["command"] %}
         {% set type = command.derived_object %}
@@ -118,4 +118,4 @@
         }
     }
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
diff --git a/generator/templates/dawn_wire/server/ServerHandlers.cpp b/generator/templates/dawn_wire/server/ServerHandlers.cpp
index b853f6f..9c9db06 100644
--- a/generator/templates/dawn_wire/server/ServerHandlers.cpp
+++ b/generator/templates/dawn_wire/server/ServerHandlers.cpp
@@ -15,7 +15,7 @@
 #include "common/Assert.h"
 #include "dawn_wire/server/Server.h"
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
     {% for command in cmd_records["command"] %}
         {% set method = command.derived_method %}
         {% set is_method = method != None %}
@@ -147,4 +147,4 @@
         return commands;
     }
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
diff --git a/src/dawn_wire/BufferConsumer.h b/src/dawn_wire/BufferConsumer.h
index 3797bf4..b7ae3e6 100644
--- a/src/dawn_wire/BufferConsumer.h
+++ b/src/dawn_wire/BufferConsumer.h
@@ -19,7 +19,7 @@
 
 #include <cstddef>
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     // BufferConsumer is a utility class that allows reading bytes from a buffer
     // while simultaneously decrementing the amount of remaining space by exactly
@@ -80,6 +80,6 @@
         }
     };
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 #endif  // DAWNWIRE_BUFFERCONSUMER_H_
\ No newline at end of file
diff --git a/src/dawn_wire/BufferConsumer_impl.h b/src/dawn_wire/BufferConsumer_impl.h
index fdd5fdb..43969ec 100644
--- a/src/dawn_wire/BufferConsumer_impl.h
+++ b/src/dawn_wire/BufferConsumer_impl.h
@@ -20,7 +20,7 @@
 #include <limits>
 #include <type_traits>
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     template <typename BufferT>
     template <typename T>
@@ -68,6 +68,6 @@
         return WireResult::Success;
     }
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 #endif  // DAWNWIRE_BUFFERCONSUMER_IMPL_H_
diff --git a/src/dawn_wire/ChunkedCommandHandler.cpp b/src/dawn_wire/ChunkedCommandHandler.cpp
index 8a962d9..d513b5e 100644
--- a/src/dawn_wire/ChunkedCommandHandler.cpp
+++ b/src/dawn_wire/ChunkedCommandHandler.cpp
@@ -19,7 +19,7 @@
 #include <algorithm>
 #include <cstring>
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     ChunkedCommandHandler::~ChunkedCommandHandler() = default;
 
@@ -76,4 +76,4 @@
         return ChunkedCommandsResult::Consumed;
     }
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
diff --git a/src/dawn_wire/ChunkedCommandHandler.h b/src/dawn_wire/ChunkedCommandHandler.h
index 182cead..d7d2c06 100644
--- a/src/dawn_wire/ChunkedCommandHandler.h
+++ b/src/dawn_wire/ChunkedCommandHandler.h
@@ -22,7 +22,7 @@
 #include <cstdint>
 #include <memory>
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     class ChunkedCommandHandler : public CommandHandler {
       public:
@@ -66,6 +66,6 @@
         std::unique_ptr<char[]> mChunkedCommandData;
     };
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 #endif  // DAWNWIRE_CHUNKEDCOMMANDHANDLER_H_
diff --git a/src/dawn_wire/ChunkedCommandSerializer.cpp b/src/dawn_wire/ChunkedCommandSerializer.cpp
index 71b7716..b45fbc7 100644
--- a/src/dawn_wire/ChunkedCommandSerializer.cpp
+++ b/src/dawn_wire/ChunkedCommandSerializer.cpp
@@ -14,7 +14,7 @@
 
 #include "dawn_wire/ChunkedCommandSerializer.h"
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     ChunkedCommandSerializer::ChunkedCommandSerializer(CommandSerializer* serializer)
         : mSerializer(serializer), mMaxAllocationSize(serializer->GetMaximumAllocationSize()) {
@@ -35,4 +35,4 @@
         }
     }
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
diff --git a/src/dawn_wire/ChunkedCommandSerializer.h b/src/dawn_wire/ChunkedCommandSerializer.h
index 2465f81..10572b1 100644
--- a/src/dawn_wire/ChunkedCommandSerializer.h
+++ b/src/dawn_wire/ChunkedCommandSerializer.h
@@ -24,7 +24,7 @@
 #include <cstring>
 #include <memory>
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     class ChunkedCommandSerializer {
       public:
@@ -109,6 +109,6 @@
         size_t mMaxAllocationSize;
     };
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 #endif  // DAWNWIRE_CHUNKEDCOMMANDSERIALIZER_H_
diff --git a/src/dawn_wire/SupportedFeatures.cpp b/src/dawn_wire/SupportedFeatures.cpp
index 41c3a4a..dc40443 100644
--- a/src/dawn_wire/SupportedFeatures.cpp
+++ b/src/dawn_wire/SupportedFeatures.cpp
@@ -14,7 +14,7 @@
 
 #include "dawn_wire/SupportedFeatures.h"
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     // Note: Upon updating this list, please also update serialization/deserialization
     // of limit structs on Adapter/Device initialization.
@@ -46,4 +46,4 @@
         return false;
     }
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
diff --git a/src/dawn_wire/SupportedFeatures.h b/src/dawn_wire/SupportedFeatures.h
index 5405ad4..9c173e1 100644
--- a/src/dawn_wire/SupportedFeatures.h
+++ b/src/dawn_wire/SupportedFeatures.h
@@ -17,10 +17,10 @@
 
 #include <dawn/webgpu.h>
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     bool IsFeatureSupported(WGPUFeatureName feature);
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 #endif  // DAWNWIRE_SUPPORTEDFEATURES_H_
diff --git a/src/dawn_wire/Wire.cpp b/src/dawn_wire/Wire.cpp
index 7221d6b..ea36b32 100644
--- a/src/dawn_wire/Wire.cpp
+++ b/src/dawn_wire/Wire.cpp
@@ -14,7 +14,7 @@
 
 #include "dawn_wire/Wire.h"
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     CommandSerializer::CommandSerializer() = default;
     CommandSerializer::~CommandSerializer() = default;
@@ -25,4 +25,4 @@
     CommandHandler::CommandHandler() = default;
     CommandHandler::~CommandHandler() = default;
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
diff --git a/src/dawn_wire/WireClient.cpp b/src/dawn_wire/WireClient.cpp
index a23e2f7..f75d4a8 100644
--- a/src/dawn_wire/WireClient.cpp
+++ b/src/dawn_wire/WireClient.cpp
@@ -15,7 +15,7 @@
 #include "dawn_wire/WireClient.h"
 #include "dawn_wire/client/Client.h"
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     WireClient::WireClient(const WireClientDescriptor& descriptor)
         : mImpl(new client::Client(descriptor.serializer, descriptor.memoryTransferService)) {
@@ -79,4 +79,4 @@
         MemoryTransferService::WriteHandle::~WriteHandle() = default;
     }  // namespace client
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
diff --git a/src/dawn_wire/WireDeserializeAllocator.cpp b/src/dawn_wire/WireDeserializeAllocator.cpp
index 7ae1b35..fda837b 100644
--- a/src/dawn_wire/WireDeserializeAllocator.cpp
+++ b/src/dawn_wire/WireDeserializeAllocator.cpp
@@ -16,7 +16,7 @@
 
 #include <algorithm>
 
-namespace dawn_wire {
+namespace dawn::wire {
     WireDeserializeAllocator::WireDeserializeAllocator() {
         Reset();
     }
@@ -57,4 +57,4 @@
         mCurrentBuffer = mStaticBuffer;
         mRemainingSize = sizeof(mStaticBuffer);
     }
-}  // namespace dawn_wire
+}  // namespace dawn::wire
diff --git a/src/dawn_wire/WireDeserializeAllocator.h b/src/dawn_wire/WireDeserializeAllocator.h
index 4c34456..613aba7 100644
--- a/src/dawn_wire/WireDeserializeAllocator.h
+++ b/src/dawn_wire/WireDeserializeAllocator.h
@@ -19,7 +19,7 @@
 
 #include <vector>
 
-namespace dawn_wire {
+namespace dawn::wire {
     // A really really simple implementation of the DeserializeAllocator. It's main feature
     // is that it has some inline storage so as to avoid allocations for the majority of
     // commands.
@@ -38,6 +38,6 @@
         char mStaticBuffer[2048];
         std::vector<char*> mAllocations;
     };
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 #endif  // DAWNWIRE_WIREDESERIALIZEALLOCATOR_H_
diff --git a/src/dawn_wire/WireResult.h b/src/dawn_wire/WireResult.h
index 0270739..165b57a 100644
--- a/src/dawn_wire/WireResult.h
+++ b/src/dawn_wire/WireResult.h
@@ -17,7 +17,7 @@
 
 #include "common/Compiler.h"
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     enum class [[nodiscard]] WireResult{
         Success,
@@ -33,6 +33,6 @@
         }                                                       \
     } while (0)
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 #endif  // DAWNWIRE_WIRERESULT_H_
diff --git a/src/dawn_wire/WireServer.cpp b/src/dawn_wire/WireServer.cpp
index c998e44..ba00527 100644
--- a/src/dawn_wire/WireServer.cpp
+++ b/src/dawn_wire/WireServer.cpp
@@ -15,7 +15,7 @@
 #include "dawn_wire/WireServer.h"
 #include "dawn_wire/server/Server.h"
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     WireServer::WireServer(const WireServerDescriptor& descriptor)
         : mImpl(new server::Server(*descriptor.procs,
@@ -80,4 +80,4 @@
         }
     }  // namespace server
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
diff --git a/src/dawn_wire/client/Adapter.cpp b/src/dawn_wire/client/Adapter.cpp
index e33df03..4b4908c 100644
--- a/src/dawn_wire/client/Adapter.cpp
+++ b/src/dawn_wire/client/Adapter.cpp
@@ -17,7 +17,7 @@
 #include "common/Log.h"
 #include "dawn_wire/client/Client.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     Adapter::~Adapter() {
         mRequestDeviceRequests.CloseAll([](RequestDeviceData* request) {
@@ -130,4 +130,4 @@
         return nullptr;
     }
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/src/dawn_wire/client/Adapter.h b/src/dawn_wire/client/Adapter.h
index e67a8b8..0988cd5 100644
--- a/src/dawn_wire/client/Adapter.h
+++ b/src/dawn_wire/client/Adapter.h
@@ -23,7 +23,7 @@
 #include "dawn_wire/client/ObjectBase.h"
 #include "dawn_wire/client/RequestTracker.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class Adapter final : public ObjectBase {
       public:
@@ -65,6 +65,6 @@
         RequestTracker<RequestDeviceData> mRequestDeviceRequests;
     };
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_ADAPTER_H_
diff --git a/src/dawn_wire/client/Buffer.cpp b/src/dawn_wire/client/Buffer.cpp
index 51b3010..69811d1 100644
--- a/src/dawn_wire/client/Buffer.cpp
+++ b/src/dawn_wire/client/Buffer.cpp
@@ -19,7 +19,7 @@
 #include "dawn_wire/client/Client.h"
 #include "dawn_wire/client/Device.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     // static
     WGPUBuffer Buffer::Create(Device* device, const WGPUBufferDescriptor* descriptor) {
@@ -402,4 +402,4 @@
         mMappedData = nullptr;
     }
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/src/dawn_wire/client/Buffer.h b/src/dawn_wire/client/Buffer.h
index f362621..ecdeba7 100644
--- a/src/dawn_wire/client/Buffer.h
+++ b/src/dawn_wire/client/Buffer.h
@@ -21,7 +21,7 @@
 #include "dawn_wire/client/ObjectBase.h"
 #include "dawn_wire/client/RequestTracker.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class Device;
 
@@ -104,6 +104,6 @@
         std::weak_ptr<bool> mDeviceIsAlive;
     };
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_BUFFER_H_
diff --git a/src/dawn_wire/client/Client.cpp b/src/dawn_wire/client/Client.cpp
index b01e8f5..f5c1370 100644
--- a/src/dawn_wire/client/Client.cpp
+++ b/src/dawn_wire/client/Client.cpp
@@ -17,7 +17,7 @@
 #include "common/Compiler.h"
 #include "dawn_wire/client/Device.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     namespace {
 
@@ -168,4 +168,4 @@
         return mDisconnected;
     }
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/src/dawn_wire/client/Client.h b/src/dawn_wire/client/Client.h
index 1e5e47f..e84f7a5 100644
--- a/src/dawn_wire/client/Client.h
+++ b/src/dawn_wire/client/Client.h
@@ -26,7 +26,7 @@
 #include "dawn_wire/WireDeserializeAllocator.h"
 #include "dawn_wire/client/ClientBase_autogen.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class Device;
     class MemoryTransferService;
@@ -90,6 +90,6 @@
 
     std::unique_ptr<MemoryTransferService> CreateInlineMemoryTransferService();
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_CLIENT_H_
diff --git a/src/dawn_wire/client/ClientDoers.cpp b/src/dawn_wire/client/ClientDoers.cpp
index fd75a09..8f2be8b 100644
--- a/src/dawn_wire/client/ClientDoers.cpp
+++ b/src/dawn_wire/client/ClientDoers.cpp
@@ -18,7 +18,7 @@
 
 #include <limits>
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     bool Client::DoDeviceUncapturedErrorCallback(Device* device,
                                                  WGPUErrorType errorType,
@@ -130,4 +130,4 @@
         return shaderModule->GetCompilationInfoCallback(requestSerial, status, info);
     }
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/src/dawn_wire/client/ClientInlineMemoryTransferService.cpp b/src/dawn_wire/client/ClientInlineMemoryTransferService.cpp
index f03969e..0830b88 100644
--- a/src/dawn_wire/client/ClientInlineMemoryTransferService.cpp
+++ b/src/dawn_wire/client/ClientInlineMemoryTransferService.cpp
@@ -19,7 +19,7 @@
 
 #include <cstring>
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class InlineMemoryTransferService : public MemoryTransferService {
         class ReadHandleImpl : public ReadHandle {
@@ -128,4 +128,4 @@
         return std::make_unique<InlineMemoryTransferService>();
     }
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/src/dawn_wire/client/ClientMemoryTransferService_mock.cpp b/src/dawn_wire/client/ClientMemoryTransferService_mock.cpp
index eed0aea..451a64c 100644
--- a/src/dawn_wire/client/ClientMemoryTransferService_mock.cpp
+++ b/src/dawn_wire/client/ClientMemoryTransferService_mock.cpp
@@ -17,7 +17,7 @@
 #include <cstdio>
 #include "common/Assert.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     MockMemoryTransferService::MockReadHandle::MockReadHandle(MockMemoryTransferService* service)
         : ReadHandle(), mService(service) {
@@ -102,4 +102,4 @@
         return new MockWriteHandle(this);
     }
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/src/dawn_wire/client/ClientMemoryTransferService_mock.h b/src/dawn_wire/client/ClientMemoryTransferService_mock.h
index 0db3530..1ee2a3d 100644
--- a/src/dawn_wire/client/ClientMemoryTransferService_mock.h
+++ b/src/dawn_wire/client/ClientMemoryTransferService_mock.h
@@ -20,7 +20,7 @@
 #include "dawn_wire/WireClient.h"
 #include "dawn_wire/client/Client.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class MockMemoryTransferService : public MemoryTransferService {
       public:
@@ -94,6 +94,6 @@
         MOCK_METHOD(void, OnWriteHandleDestroy, (const void* WriteHandle));
     };
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_CLIENTMEMORYTRANSFERSERVICE_MOCK_H_
diff --git a/src/dawn_wire/client/Device.cpp b/src/dawn_wire/client/Device.cpp
index 49c5f2b..3b40015 100644
--- a/src/dawn_wire/client/Device.cpp
+++ b/src/dawn_wire/client/Device.cpp
@@ -20,7 +20,7 @@
 #include "dawn_wire/client/Client.h"
 #include "dawn_wire/client/ObjectAllocator.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     Device::Device(Client* clientIn, uint32_t initialRefcount, uint32_t initialId)
         : ObjectBase(clientIn, initialRefcount, initialId), mIsAlive(std::make_shared<bool>()) {
@@ -339,4 +339,4 @@
         return true;
     }
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/src/dawn_wire/client/Device.h b/src/dawn_wire/client/Device.h
index 87965ea..e9c15a6 100644
--- a/src/dawn_wire/client/Device.h
+++ b/src/dawn_wire/client/Device.h
@@ -26,7 +26,7 @@
 
 #include <memory>
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class Client;
     class Queue;
@@ -107,6 +107,6 @@
         std::shared_ptr<bool> mIsAlive;
     };
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_DEVICE_H_
diff --git a/src/dawn_wire/client/Instance.cpp b/src/dawn_wire/client/Instance.cpp
index 9b69d33..8718908 100644
--- a/src/dawn_wire/client/Instance.cpp
+++ b/src/dawn_wire/client/Instance.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_wire/client/Client.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     Instance::~Instance() {
         mRequestAdapterRequests.CloseAll([](RequestAdapterData* request) {
@@ -98,4 +98,4 @@
         return true;
     }
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/src/dawn_wire/client/Instance.h b/src/dawn_wire/client/Instance.h
index 964523b..bd2a1f2 100644
--- a/src/dawn_wire/client/Instance.h
+++ b/src/dawn_wire/client/Instance.h
@@ -22,7 +22,7 @@
 #include "dawn_wire/client/ObjectBase.h"
 #include "dawn_wire/client/RequestTracker.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class Instance final : public ObjectBase {
       public:
@@ -51,6 +51,6 @@
         RequestTracker<RequestAdapterData> mRequestAdapterRequests;
     };
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_INSTANCE_H_
diff --git a/src/dawn_wire/client/LimitsAndFeatures.cpp b/src/dawn_wire/client/LimitsAndFeatures.cpp
index 2579ef7..96d4c63 100644
--- a/src/dawn_wire/client/LimitsAndFeatures.cpp
+++ b/src/dawn_wire/client/LimitsAndFeatures.cpp
@@ -17,7 +17,7 @@
 #include "common/Assert.h"
 #include "dawn_wire/SupportedFeatures.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     bool LimitsAndFeatures::GetLimits(WGPUSupportedLimits* limits) const {
         ASSERT(limits != nullptr);
@@ -60,4 +60,4 @@
         }
     }
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/src/dawn_wire/client/LimitsAndFeatures.h b/src/dawn_wire/client/LimitsAndFeatures.h
index 52dcbbf..e6c07e5 100644
--- a/src/dawn_wire/client/LimitsAndFeatures.h
+++ b/src/dawn_wire/client/LimitsAndFeatures.h
@@ -19,7 +19,7 @@
 
 #include <unordered_set>
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class LimitsAndFeatures {
       public:
@@ -35,6 +35,6 @@
         std::unordered_set<WGPUFeatureName> mFeatures;
     };
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_LIMITSANDFEATURES_H_
diff --git a/src/dawn_wire/client/ObjectAllocator.h b/src/dawn_wire/client/ObjectAllocator.h
index a2efd3b..3876e7e 100644
--- a/src/dawn_wire/client/ObjectAllocator.h
+++ b/src/dawn_wire/client/ObjectAllocator.h
@@ -23,7 +23,7 @@
 #include <memory>
 #include <vector>
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     template <typename T>
     class ObjectAllocator {
@@ -105,6 +105,6 @@
         std::vector<uint32_t> mFreeIds;
         std::vector<ObjectAndSerial> mObjects;
     };
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_OBJECTALLOCATOR_H_
diff --git a/src/dawn_wire/client/ObjectBase.h b/src/dawn_wire/client/ObjectBase.h
index ac6ae27..1a023f8 100644
--- a/src/dawn_wire/client/ObjectBase.h
+++ b/src/dawn_wire/client/ObjectBase.h
@@ -20,7 +20,7 @@
 #include "common/LinkedList.h"
 #include "dawn_wire/ObjectType_autogen.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class Client;
 
@@ -46,6 +46,6 @@
         const uint32_t id;
     };
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_OBJECTBASE_H_
diff --git a/src/dawn_wire/client/Queue.cpp b/src/dawn_wire/client/Queue.cpp
index 1875b25..0de181e 100644
--- a/src/dawn_wire/client/Queue.cpp
+++ b/src/dawn_wire/client/Queue.cpp
@@ -17,7 +17,7 @@
 #include "dawn_wire/client/Client.h"
 #include "dawn_wire/client/Device.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     Queue::~Queue() {
         ClearAllCallbacks(WGPUQueueWorkDoneStatus_Unknown);
@@ -95,4 +95,4 @@
         });
     }
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/src/dawn_wire/client/Queue.h b/src/dawn_wire/client/Queue.h
index 2d17736..4eb653a 100644
--- a/src/dawn_wire/client/Queue.h
+++ b/src/dawn_wire/client/Queue.h
@@ -21,7 +21,7 @@
 #include "dawn_wire/client/ObjectBase.h"
 #include "dawn_wire/client/RequestTracker.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class Queue final : public ObjectBase {
       public:
@@ -52,6 +52,6 @@
         RequestTracker<OnWorkDoneData> mOnWorkDoneRequests;
     };
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_QUEUE_H_
diff --git a/src/dawn_wire/client/RequestTracker.h b/src/dawn_wire/client/RequestTracker.h
index 8928033..59aedce 100644
--- a/src/dawn_wire/client/RequestTracker.h
+++ b/src/dawn_wire/client/RequestTracker.h
@@ -21,7 +21,7 @@
 #include <cstdint>
 #include <map>
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class Device;
     class MemoryTransferService;
@@ -77,6 +77,6 @@
         std::map<uint64_t, Request> mRequests;
     };
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_REQUESTTRACKER_H_
diff --git a/src/dawn_wire/client/ShaderModule.cpp b/src/dawn_wire/client/ShaderModule.cpp
index 1e491b2..23433ff 100644
--- a/src/dawn_wire/client/ShaderModule.cpp
+++ b/src/dawn_wire/client/ShaderModule.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_wire/client/Client.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     ShaderModule::~ShaderModule() {
         ClearAllCallbacks(WGPUCompilationInfoRequestStatus_Unknown);
@@ -61,4 +61,4 @@
         });
     }
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
diff --git a/src/dawn_wire/client/ShaderModule.h b/src/dawn_wire/client/ShaderModule.h
index 2359be3..077dfd4 100644
--- a/src/dawn_wire/client/ShaderModule.h
+++ b/src/dawn_wire/client/ShaderModule.h
@@ -20,7 +20,7 @@
 #include "dawn_wire/client/ObjectBase.h"
 #include "dawn_wire/client/RequestTracker.h"
 
-namespace dawn_wire::client {
+namespace dawn::wire::client {
 
     class ShaderModule final : public ObjectBase {
       public:
@@ -43,6 +43,6 @@
         RequestTracker<CompilationInfoRequest> mCompilationInfoRequests;
     };
 
-}  // namespace dawn_wire::client
+}  // namespace dawn::wire::client
 
 #endif  // DAWNWIRE_CLIENT_SHADER_MODULE_H_
diff --git a/src/dawn_wire/server/ObjectStorage.h b/src/dawn_wire/server/ObjectStorage.h
index c48235e..dd373f2 100644
--- a/src/dawn_wire/server/ObjectStorage.h
+++ b/src/dawn_wire/server/ObjectStorage.h
@@ -22,7 +22,7 @@
 #include <map>
 #include <unordered_set>
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     struct DeviceInfo {
         std::unordered_set<uint64_t> childObjectTypesAndIds;
@@ -223,6 +223,6 @@
         std::map<T, ObjectId> mTable;
     };
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
 
 #endif  // DAWNWIRE_SERVER_OBJECTSTORAGE_H_
diff --git a/src/dawn_wire/server/Server.cpp b/src/dawn_wire/server/Server.cpp
index 57da184..a2d029d 100644
--- a/src/dawn_wire/server/Server.cpp
+++ b/src/dawn_wire/server/Server.cpp
@@ -15,7 +15,7 @@
 #include "dawn_wire/server/Server.h"
 #include "dawn_wire/WireServer.h"
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     Server::Server(const DawnProcTable& procs,
                    CommandSerializer* serializer,
@@ -210,4 +210,4 @@
         return true;
     }
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
diff --git a/src/dawn_wire/server/Server.h b/src/dawn_wire/server/Server.h
index 69de4ab..87c7d77 100644
--- a/src/dawn_wire/server/Server.h
+++ b/src/dawn_wire/server/Server.h
@@ -18,7 +18,7 @@
 #include "dawn_wire/ChunkedCommandSerializer.h"
 #include "dawn_wire/server/ServerBase_autogen.h"
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     class Server;
     class MemoryTransferService;
@@ -238,6 +238,6 @@
 
     std::unique_ptr<MemoryTransferService> CreateInlineMemoryTransferService();
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
 
 #endif  // DAWNWIRE_SERVER_SERVER_H_
diff --git a/src/dawn_wire/server/ServerAdapter.cpp b/src/dawn_wire/server/ServerAdapter.cpp
index 7ec99f4..cae465c 100644
--- a/src/dawn_wire/server/ServerAdapter.cpp
+++ b/src/dawn_wire/server/ServerAdapter.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_wire/SupportedFeatures.h"
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     bool Server::DoAdapterRequestDevice(ObjectId adapterId,
                                         uint64_t requestSerial,
@@ -107,4 +107,4 @@
         SerializeCommand(cmd);
     }
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
diff --git a/src/dawn_wire/server/ServerBuffer.cpp b/src/dawn_wire/server/ServerBuffer.cpp
index 03192f6..c6eca06 100644
--- a/src/dawn_wire/server/ServerBuffer.cpp
+++ b/src/dawn_wire/server/ServerBuffer.cpp
@@ -19,7 +19,7 @@
 
 #include <memory>
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     bool Server::PreHandleBufferUnmap(const BufferUnmapCmd& cmd) {
         auto* buffer = BufferObjects().Get(cmd.selfId);
@@ -279,4 +279,4 @@
         });
     }
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
diff --git a/src/dawn_wire/server/ServerDevice.cpp b/src/dawn_wire/server/ServerDevice.cpp
index 6a52411..d4c4087 100644
--- a/src/dawn_wire/server/ServerDevice.cpp
+++ b/src/dawn_wire/server/ServerDevice.cpp
@@ -14,7 +14,7 @@
 
 #include "dawn_wire/server/Server.h"
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     namespace {
 
@@ -201,4 +201,4 @@
         SerializeCommand(cmd);
     }
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
diff --git a/src/dawn_wire/server/ServerInlineMemoryTransferService.cpp b/src/dawn_wire/server/ServerInlineMemoryTransferService.cpp
index 2fcbad7..5dd9281 100644
--- a/src/dawn_wire/server/ServerInlineMemoryTransferService.cpp
+++ b/src/dawn_wire/server/ServerInlineMemoryTransferService.cpp
@@ -18,7 +18,7 @@
 
 #include <cstring>
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     class InlineMemoryTransferService : public MemoryTransferService {
       public:
@@ -91,4 +91,4 @@
         return std::make_unique<InlineMemoryTransferService>();
     }
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
diff --git a/src/dawn_wire/server/ServerInstance.cpp b/src/dawn_wire/server/ServerInstance.cpp
index b6bb88b..1a0f517 100644
--- a/src/dawn_wire/server/ServerInstance.cpp
+++ b/src/dawn_wire/server/ServerInstance.cpp
@@ -18,7 +18,7 @@
 
 #include <algorithm>
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     bool Server::DoInstanceRequestAdapter(ObjectId instanceId,
                                           uint64_t requestSerial,
@@ -97,4 +97,4 @@
         SerializeCommand(cmd);
     }
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
diff --git a/src/dawn_wire/server/ServerMemoryTransferService_mock.cpp b/src/dawn_wire/server/ServerMemoryTransferService_mock.cpp
index 0bb1442..b52e8f7 100644
--- a/src/dawn_wire/server/ServerMemoryTransferService_mock.cpp
+++ b/src/dawn_wire/server/ServerMemoryTransferService_mock.cpp
@@ -16,7 +16,7 @@
 
 #include "common/Assert.h"
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     MockMemoryTransferService::MockReadHandle::MockReadHandle(MockMemoryTransferService* service)
         : ReadHandle(), mService(service) {
@@ -88,4 +88,4 @@
         return new MockWriteHandle(this);
     }
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
diff --git a/src/dawn_wire/server/ServerMemoryTransferService_mock.h b/src/dawn_wire/server/ServerMemoryTransferService_mock.h
index 36510e6..293a9c0 100644
--- a/src/dawn_wire/server/ServerMemoryTransferService_mock.h
+++ b/src/dawn_wire/server/ServerMemoryTransferService_mock.h
@@ -20,7 +20,7 @@
 #include "dawn_wire/WireServer.h"
 #include "dawn_wire/server/Server.h"
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     class MockMemoryTransferService : public MemoryTransferService {
       public:
@@ -103,6 +103,6 @@
         MOCK_METHOD(void, OnWriteHandleDestroy, (const WriteHandle* writeHandle));
     };
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
 
 #endif  // DAWNWIRE_SERVER_SERVERMEMORYTRANSFERSERVICE_MOCK_H_
diff --git a/src/dawn_wire/server/ServerQueue.cpp b/src/dawn_wire/server/ServerQueue.cpp
index 656c833..5d92921 100644
--- a/src/dawn_wire/server/ServerQueue.cpp
+++ b/src/dawn_wire/server/ServerQueue.cpp
@@ -15,7 +15,7 @@
 #include "common/Assert.h"
 #include "dawn_wire/server/Server.h"
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     void Server::OnQueueWorkDone(QueueWorkDoneUserdata* data, WGPUQueueWorkDoneStatus status) {
         ReturnQueueWorkDoneCallbackCmd cmd;
@@ -100,4 +100,4 @@
         return true;
     }
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
diff --git a/src/dawn_wire/server/ServerShaderModule.cpp b/src/dawn_wire/server/ServerShaderModule.cpp
index 072ad73..a213ae9 100644
--- a/src/dawn_wire/server/ServerShaderModule.cpp
+++ b/src/dawn_wire/server/ServerShaderModule.cpp
@@ -16,7 +16,7 @@
 
 #include <memory>
 
-namespace dawn_wire::server {
+namespace dawn::wire::server {
 
     bool Server::DoShaderModuleGetCompilationInfo(ObjectId shaderModuleId, uint64_t requestSerial) {
         auto* shaderModule = ShaderModuleObjects().Get(shaderModuleId);
@@ -46,4 +46,4 @@
         SerializeCommand(cmd);
     }
 
-}  // namespace dawn_wire::server
+}  // namespace dawn::wire::server
diff --git a/src/fuzzers/DawnWireServerFuzzer.cpp b/src/fuzzers/DawnWireServerFuzzer.cpp
index 86bfae3..e514304 100644
--- a/src/fuzzers/DawnWireServerFuzzer.cpp
+++ b/src/fuzzers/DawnWireServerFuzzer.cpp
@@ -28,7 +28,7 @@
 
 namespace {
 
-    class DevNull : public dawn_wire::CommandSerializer {
+    class DevNull : public dawn::wire::CommandSerializer {
       public:
         size_t GetMaximumAllocationSize() const override {
             // Some fuzzer bots have a 2GB allocation limit. Pick a value reasonably below that.
@@ -116,11 +116,11 @@
     }
 
     DevNull devNull;
-    dawn_wire::WireServerDescriptor serverDesc = {};
+    dawn::wire::WireServerDescriptor serverDesc = {};
     serverDesc.procs = &procs;
     serverDesc.serializer = &devNull;
 
-    std::unique_ptr<dawn_wire::WireServer> wireServer(new dawn_wire::WireServer(serverDesc));
+    std::unique_ptr<dawn::wire::WireServer> wireServer(new dawn_wire::WireServer(serverDesc));
     wireServer->InjectDevice(device.Get(), 1, 0);
 
     wireServer->HandleCommands(reinterpret_cast<const char*>(data), size);
diff --git a/src/include/dawn_platform/DawnPlatform.h b/src/include/dawn_platform/DawnPlatform.h
index 4245b28..1cf9740 100644
--- a/src/include/dawn_platform/DawnPlatform.h
+++ b/src/include/dawn_platform/DawnPlatform.h
@@ -113,6 +113,7 @@
 
 }  // namespace dawn::platform
 
+// TODO(dawn:824): Remove once the deprecation period is passed.
 namespace dawn_platform = dawn::platform;
 
 #endif  // DAWNPLATFORM_DAWNPLATFORM_H_
diff --git a/src/include/dawn_wire/Wire.h b/src/include/dawn_wire/Wire.h
index 0c11d91..1fa6239 100644
--- a/src/include/dawn_wire/Wire.h
+++ b/src/include/dawn_wire/Wire.h
@@ -21,7 +21,7 @@
 #include "dawn/webgpu.h"
 #include "dawn_wire/dawn_wire_export.h"
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     class DAWN_WIRE_EXPORT CommandSerializer {
       public:
@@ -71,6 +71,9 @@
                                                          const volatile char* deserializeBuffer,
                                                          size_t deserializeBufferSize);
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
+
+// TODO(dawn:824): Remove once the deprecation period is passed.
+namespace dawn_wire = dawn::wire;
 
 #endif  // DAWNWIRE_WIRE_H_
diff --git a/src/include/dawn_wire/WireClient.h b/src/include/dawn_wire/WireClient.h
index 1c10e07..9917ed0 100644
--- a/src/include/dawn_wire/WireClient.h
+++ b/src/include/dawn_wire/WireClient.h
@@ -21,7 +21,7 @@
 #include <memory>
 #include <vector>
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     namespace client {
         class Client;
@@ -178,6 +178,6 @@
         // Backdoor to get the order of the ProcMap for testing
         DAWN_WIRE_EXPORT std::vector<const char*> GetProcMapNamesForTesting();
     }  // namespace client
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 #endif  // DAWNWIRE_WIRECLIENT_H_
diff --git a/src/include/dawn_wire/WireServer.h b/src/include/dawn_wire/WireServer.h
index a720874..0166e93 100644
--- a/src/include/dawn_wire/WireServer.h
+++ b/src/include/dawn_wire/WireServer.h
@@ -21,7 +21,7 @@
 
 struct DawnProcTable;
 
-namespace dawn_wire {
+namespace dawn::wire {
 
     namespace server {
         class Server;
@@ -145,6 +145,6 @@
         };
     }  // namespace server
 
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 #endif  // DAWNWIRE_WIRESERVER_H_
diff --git a/src/tests/DawnTest.h b/src/tests/DawnTest.h
index 5496bb7..e79a3e4 100644
--- a/src/tests/DawnTest.h
+++ b/src/tests/DawnTest.h
@@ -201,11 +201,11 @@
     class ExpectBetweenColors;
 }  // namespace detail
 
-namespace dawn_wire {
+namespace dawn::wire {
     class CommandHandler;
     class WireClient;
     class WireServer;
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 void InitDawnEnd2EndTestEnvironment(int argc, char** argv);
 
diff --git a/src/tests/unittests/GetProcAddressTests.cpp b/src/tests/unittests/GetProcAddressTests.cpp
index e2c6afd..1305dbc 100644
--- a/src/tests/unittests/GetProcAddressTests.cpp
+++ b/src/tests/unittests/GetProcAddressTests.cpp
@@ -67,12 +67,12 @@
                 case DawnFlavor::Wire: {
                     mC2sBuf = std::make_unique<utils::TerribleCommandBuffer>();
 
-                    dawn_wire::WireClientDescriptor clientDesc = {};
+                    dawn::wire::WireClientDescriptor clientDesc = {};
                     clientDesc.serializer = mC2sBuf.get();
-                    mWireClient = std::make_unique<dawn_wire::WireClient>(clientDesc);
+                    mWireClient = std::make_unique<dawn::wire::WireClient>(clientDesc);
 
                     mDevice = wgpu::Device::Acquire(mWireClient->ReserveDevice().device);
-                    mProcs = dawn_wire::client::GetProcs();
+                    mProcs = dawn::wire::client::GetProcs();
                     break;
                 }
 
@@ -94,7 +94,7 @@
         dawn_native::null::Adapter mNativeAdapter;
 
         std::unique_ptr<utils::TerribleCommandBuffer> mC2sBuf;
-        std::unique_ptr<dawn_wire::WireClient> mWireClient;
+        std::unique_ptr<dawn::wire::WireClient> mWireClient;
 
         wgpu::Device mDevice;
         DawnProcTable mProcs;
@@ -162,7 +162,7 @@
     }
 
     TEST(GetProcAddressInternalTests, CheckDawnWireClientProcMapOrder) {
-        std::vector<const char*> names = dawn_wire::client::GetProcMapNamesForTesting();
+        std::vector<const char*> names = dawn::wire::client::GetProcMapNamesForTesting();
         for (size_t i = 1; i < names.size(); i++) {
             ASSERT_LT(std::string(names[i - 1]), std::string(names[i]));
         }
diff --git a/src/tests/unittests/wire/WireAdapterTests.cpp b/src/tests/unittests/wire/WireAdapterTests.cpp
index 48b0a7f..1289bbd 100644
--- a/src/tests/unittests/wire/WireAdapterTests.cpp
+++ b/src/tests/unittests/wire/WireAdapterTests.cpp
@@ -25,7 +25,7 @@
 namespace {
 
     using namespace testing;
-    using namespace dawn_wire;
+    using namespace dawn::wire;
 
     class WireAdapterTests : public WireTest {
       protected:
diff --git a/src/tests/unittests/wire/WireArgumentTests.cpp b/src/tests/unittests/wire/WireArgumentTests.cpp
index 4d21fa7..01827ff 100644
--- a/src/tests/unittests/wire/WireArgumentTests.cpp
+++ b/src/tests/unittests/wire/WireArgumentTests.cpp
@@ -19,7 +19,7 @@
 #include <array>
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 class WireArgumentTests : public WireTest {
   public:
diff --git a/src/tests/unittests/wire/WireBasicTests.cpp b/src/tests/unittests/wire/WireBasicTests.cpp
index e14a596..878b184 100644
--- a/src/tests/unittests/wire/WireBasicTests.cpp
+++ b/src/tests/unittests/wire/WireBasicTests.cpp
@@ -15,7 +15,7 @@
 #include "tests/unittests/wire/WireTest.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 class WireBasicTests : public WireTest {
   public:
diff --git a/src/tests/unittests/wire/WireBufferMappingTests.cpp b/src/tests/unittests/wire/WireBufferMappingTests.cpp
index 582cff8..64b5d0c 100644
--- a/src/tests/unittests/wire/WireBufferMappingTests.cpp
+++ b/src/tests/unittests/wire/WireBufferMappingTests.cpp
@@ -17,7 +17,7 @@
 #include "dawn_wire/WireClient.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 namespace {
 
diff --git a/src/tests/unittests/wire/WireCreatePipelineAsyncTests.cpp b/src/tests/unittests/wire/WireCreatePipelineAsyncTests.cpp
index 78f7f8f..43de006 100644
--- a/src/tests/unittests/wire/WireCreatePipelineAsyncTests.cpp
+++ b/src/tests/unittests/wire/WireCreatePipelineAsyncTests.cpp
@@ -17,7 +17,7 @@
 #include "dawn_wire/WireClient.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 namespace {
 
diff --git a/src/tests/unittests/wire/WireDestroyObjectTests.cpp b/src/tests/unittests/wire/WireDestroyObjectTests.cpp
index beb2e03..7850eda 100644
--- a/src/tests/unittests/wire/WireDestroyObjectTests.cpp
+++ b/src/tests/unittests/wire/WireDestroyObjectTests.cpp
@@ -16,7 +16,7 @@
 #include "tests/unittests/wire/WireTest.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 class WireDestroyObjectTests : public WireTest {};
 
diff --git a/src/tests/unittests/wire/WireDisconnectTests.cpp b/src/tests/unittests/wire/WireDisconnectTests.cpp
index fee5858..24344ca 100644
--- a/src/tests/unittests/wire/WireDisconnectTests.cpp
+++ b/src/tests/unittests/wire/WireDisconnectTests.cpp
@@ -19,7 +19,7 @@
 #include "tests/MockCallback.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 namespace {
 
diff --git a/src/tests/unittests/wire/WireErrorCallbackTests.cpp b/src/tests/unittests/wire/WireErrorCallbackTests.cpp
index 32ba5f5..4469674 100644
--- a/src/tests/unittests/wire/WireErrorCallbackTests.cpp
+++ b/src/tests/unittests/wire/WireErrorCallbackTests.cpp
@@ -17,7 +17,7 @@
 #include "dawn_wire/WireClient.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 namespace {
 
diff --git a/src/tests/unittests/wire/WireExtensionTests.cpp b/src/tests/unittests/wire/WireExtensionTests.cpp
index dabab2c..cb155a6 100644
--- a/src/tests/unittests/wire/WireExtensionTests.cpp
+++ b/src/tests/unittests/wire/WireExtensionTests.cpp
@@ -15,7 +15,7 @@
 #include "tests/unittests/wire/WireTest.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 class WireExtensionTests : public WireTest {
   public:
diff --git a/src/tests/unittests/wire/WireInjectDeviceTests.cpp b/src/tests/unittests/wire/WireInjectDeviceTests.cpp
index 21f9110..42cfec6 100644
--- a/src/tests/unittests/wire/WireInjectDeviceTests.cpp
+++ b/src/tests/unittests/wire/WireInjectDeviceTests.cpp
@@ -18,7 +18,7 @@
 #include "dawn_wire/WireServer.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 class WireInjectDeviceTests : public WireTest {
   public:
diff --git a/src/tests/unittests/wire/WireInjectInstanceTests.cpp b/src/tests/unittests/wire/WireInjectInstanceTests.cpp
index 05502f5..5f9fe2b 100644
--- a/src/tests/unittests/wire/WireInjectInstanceTests.cpp
+++ b/src/tests/unittests/wire/WireInjectInstanceTests.cpp
@@ -18,7 +18,7 @@
 #include "dawn_wire/WireServer.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 namespace {
 
diff --git a/src/tests/unittests/wire/WireInjectSwapChainTests.cpp b/src/tests/unittests/wire/WireInjectSwapChainTests.cpp
index 6c3e104..a002580 100644
--- a/src/tests/unittests/wire/WireInjectSwapChainTests.cpp
+++ b/src/tests/unittests/wire/WireInjectSwapChainTests.cpp
@@ -18,7 +18,7 @@
 #include "dawn_wire/WireServer.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 class WireInjectSwapChainTests : public WireTest {
   public:
diff --git a/src/tests/unittests/wire/WireInjectTextureTests.cpp b/src/tests/unittests/wire/WireInjectTextureTests.cpp
index d8df43a..27fd843 100644
--- a/src/tests/unittests/wire/WireInjectTextureTests.cpp
+++ b/src/tests/unittests/wire/WireInjectTextureTests.cpp
@@ -18,7 +18,7 @@
 #include "dawn_wire/WireServer.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 class WireInjectTextureTests : public WireTest {
   public:
diff --git a/src/tests/unittests/wire/WireInstanceTests.cpp b/src/tests/unittests/wire/WireInstanceTests.cpp
index 6ef0a4c..9f2ac58 100644
--- a/src/tests/unittests/wire/WireInstanceTests.cpp
+++ b/src/tests/unittests/wire/WireInstanceTests.cpp
@@ -25,7 +25,7 @@
 namespace {
 
     using namespace testing;
-    using namespace dawn_wire;
+    using namespace dawn::wire;
 
     class WireInstanceBasicTest : public WireTest {};
     class WireInstanceTests : public WireTest {
diff --git a/src/tests/unittests/wire/WireMemoryTransferServiceTests.cpp b/src/tests/unittests/wire/WireMemoryTransferServiceTests.cpp
index 756dcc0..b987ad3 100644
--- a/src/tests/unittests/wire/WireMemoryTransferServiceTests.cpp
+++ b/src/tests/unittests/wire/WireMemoryTransferServiceTests.cpp
@@ -18,7 +18,7 @@
 #include "dawn_wire/server/ServerMemoryTransferService_mock.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 namespace {
 
@@ -314,8 +314,8 @@
     // mUpdatedBufferContent| after all writes are flushed.
     static uint32_t mUpdatedBufferContent;
 
-    testing::StrictMock<dawn_wire::server::MockMemoryTransferService> serverMemoryTransferService;
-    testing::StrictMock<dawn_wire::client::MockMemoryTransferService> clientMemoryTransferService;
+    testing::StrictMock<dawn::wire::server::MockMemoryTransferService> serverMemoryTransferService;
+    testing::StrictMock<dawn::wire::client::MockMemoryTransferService> clientMemoryTransferService;
 };
 
 uint32_t WireMemoryTransferServiceTests::mBufferContent = 1337;
diff --git a/src/tests/unittests/wire/WireOptionalTests.cpp b/src/tests/unittests/wire/WireOptionalTests.cpp
index c52c5ac..e5da98f 100644
--- a/src/tests/unittests/wire/WireOptionalTests.cpp
+++ b/src/tests/unittests/wire/WireOptionalTests.cpp
@@ -15,7 +15,7 @@
 #include "tests/unittests/wire/WireTest.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 class WireOptionalTests : public WireTest {
   public:
diff --git a/src/tests/unittests/wire/WireQueueTests.cpp b/src/tests/unittests/wire/WireQueueTests.cpp
index 6045e4f..1aba0b2 100644
--- a/src/tests/unittests/wire/WireQueueTests.cpp
+++ b/src/tests/unittests/wire/WireQueueTests.cpp
@@ -17,7 +17,7 @@
 #include "dawn_wire/WireClient.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 class MockQueueWorkDoneCallback {
   public:
diff --git a/src/tests/unittests/wire/WireShaderModuleTests.cpp b/src/tests/unittests/wire/WireShaderModuleTests.cpp
index d7d58d8..e123346 100644
--- a/src/tests/unittests/wire/WireShaderModuleTests.cpp
+++ b/src/tests/unittests/wire/WireShaderModuleTests.cpp
@@ -17,7 +17,7 @@
 #include "dawn_wire/WireClient.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 namespace {
 
diff --git a/src/tests/unittests/wire/WireTest.cpp b/src/tests/unittests/wire/WireTest.cpp
index db64325..aedc8b1 100644
--- a/src/tests/unittests/wire/WireTest.cpp
+++ b/src/tests/unittests/wire/WireTest.cpp
@@ -20,7 +20,7 @@
 #include "utils/TerribleCommandBuffer.h"
 
 using namespace testing;
-using namespace dawn_wire;
+using namespace dawn::wire;
 
 WireTest::WireTest() {
 }
@@ -65,7 +65,7 @@
     mWireClient.reset(new WireClient(clientDesc));
     mS2cBuf->SetHandler(mWireClient.get());
 
-    dawnProcSetProcs(&dawn_wire::client::GetProcs());
+    dawnProcSetProcs(&dawn::wire::client::GetProcs());
 
     auto deviceReservation = mWireClient->ReserveDevice();
     EXPECT_CALL(api, DeviceReference(mockDevice));
@@ -120,11 +120,11 @@
     ASSERT_EQ(mS2cBuf->Flush(), success);
 }
 
-dawn_wire::WireServer* WireTest::GetWireServer() {
+dawn::wire::WireServer* WireTest::GetWireServer() {
     return mWireServer.get();
 }
 
-dawn_wire::WireClient* WireTest::GetWireClient() {
+dawn::wire::WireClient* WireTest::GetWireClient() {
     return mWireClient.get();
 }
 
diff --git a/src/tests/unittests/wire/WireTest.h b/src/tests/unittests/wire/WireTest.h
index 03ac641..235dcf5 100644
--- a/src/tests/unittests/wire/WireTest.h
+++ b/src/tests/unittests/wire/WireTest.h
@@ -97,7 +97,7 @@
     return MakeMatcher(new StringMessageMatcher());
 }
 
-namespace dawn_wire {
+namespace dawn::wire {
     class WireClient;
     class WireServer;
     namespace client {
@@ -106,7 +106,7 @@
     namespace server {
         class MemoryTransferService;
     }  // namespace server
-}  // namespace dawn_wire
+}  // namespace dawn::wire
 
 namespace utils {
     class TerribleCommandBuffer;
@@ -131,8 +131,8 @@
     WGPUDevice device;
     WGPUQueue queue;
 
-    dawn_wire::WireServer* GetWireServer();
-    dawn_wire::WireClient* GetWireClient();
+    dawn::wire::WireServer* GetWireServer();
+    dawn::wire::WireClient* GetWireClient();
 
     void DeleteServer();
     void DeleteClient();
@@ -140,11 +140,11 @@
   private:
     void SetupIgnoredCallExpectations();
 
-    virtual dawn_wire::client::MemoryTransferService* GetClientMemoryTransferService();
-    virtual dawn_wire::server::MemoryTransferService* GetServerMemoryTransferService();
+    virtual dawn::wire::client::MemoryTransferService* GetClientMemoryTransferService();
+    virtual dawn::wire::server::MemoryTransferService* GetServerMemoryTransferService();
 
-    std::unique_ptr<dawn_wire::WireServer> mWireServer;
-    std::unique_ptr<dawn_wire::WireClient> mWireClient;
+    std::unique_ptr<dawn::wire::WireServer> mWireServer;
+    std::unique_ptr<dawn::wire::WireClient> mWireClient;
     std::unique_ptr<utils::TerribleCommandBuffer> mS2cBuf;
     std::unique_ptr<utils::TerribleCommandBuffer> mC2sBuf;
 };
diff --git a/src/tests/unittests/wire/WireWGPUDevicePropertiesTests.cpp b/src/tests/unittests/wire/WireWGPUDevicePropertiesTests.cpp
index 57fe37f..dd0023c 100644
--- a/src/tests/unittests/wire/WireWGPUDevicePropertiesTests.cpp
+++ b/src/tests/unittests/wire/WireWGPUDevicePropertiesTests.cpp
@@ -28,14 +28,14 @@
     sentWGPUDeviceProperties.timestampQuery = true;
 
     size_t sentWGPUDevicePropertiesSize =
-        dawn_wire::SerializedWGPUDevicePropertiesSize(&sentWGPUDeviceProperties);
+        dawn::wire::SerializedWGPUDevicePropertiesSize(&sentWGPUDeviceProperties);
     std::vector<char> buffer;
     buffer.resize(sentWGPUDevicePropertiesSize);
-    dawn_wire::SerializeWGPUDeviceProperties(&sentWGPUDeviceProperties, buffer.data());
+    dawn::wire::SerializeWGPUDeviceProperties(&sentWGPUDeviceProperties, buffer.data());
 
     WGPUDeviceProperties receivedWGPUDeviceProperties;
-    ASSERT_TRUE(dawn_wire::DeserializeWGPUDeviceProperties(&receivedWGPUDeviceProperties,
-                                                           buffer.data(), buffer.size()));
+    ASSERT_TRUE(dawn::wire::DeserializeWGPUDeviceProperties(&receivedWGPUDeviceProperties,
+                                                            buffer.data(), buffer.size()));
     ASSERT_TRUE(receivedWGPUDeviceProperties.textureCompressionBC);
     ASSERT_FALSE(receivedWGPUDeviceProperties.pipelineStatisticsQuery);
     ASSERT_TRUE(receivedWGPUDeviceProperties.timestampQuery);
@@ -46,12 +46,12 @@
     WGPUDeviceProperties sentWGPUDeviceProperties = {};
 
     size_t sentWGPUDevicePropertiesSize =
-        dawn_wire::SerializedWGPUDevicePropertiesSize(&sentWGPUDeviceProperties);
+        dawn::wire::SerializedWGPUDevicePropertiesSize(&sentWGPUDeviceProperties);
     std::vector<char> buffer;
     buffer.resize(sentWGPUDevicePropertiesSize);
-    dawn_wire::SerializeWGPUDeviceProperties(&sentWGPUDeviceProperties, buffer.data());
+    dawn::wire::SerializeWGPUDeviceProperties(&sentWGPUDeviceProperties, buffer.data());
 
     WGPUDeviceProperties receivedWGPUDeviceProperties;
-    ASSERT_FALSE(dawn_wire::DeserializeWGPUDeviceProperties(&receivedWGPUDeviceProperties,
-                                                            buffer.data(), buffer.size() - 1));
+    ASSERT_FALSE(dawn::wire::DeserializeWGPUDeviceProperties(&receivedWGPUDeviceProperties,
+                                                             buffer.data(), buffer.size() - 1));
 }
diff --git a/src/utils/TerribleCommandBuffer.cpp b/src/utils/TerribleCommandBuffer.cpp
index 0c06ab1..9985d6a 100644
--- a/src/utils/TerribleCommandBuffer.cpp
+++ b/src/utils/TerribleCommandBuffer.cpp
@@ -21,11 +21,11 @@
     TerribleCommandBuffer::TerribleCommandBuffer() {
     }
 
-    TerribleCommandBuffer::TerribleCommandBuffer(dawn_wire::CommandHandler* handler)
+    TerribleCommandBuffer::TerribleCommandBuffer(dawn::wire::CommandHandler* handler)
         : mHandler(handler) {
     }
 
-    void TerribleCommandBuffer::SetHandler(dawn_wire::CommandHandler* handler) {
+    void TerribleCommandBuffer::SetHandler(dawn::wire::CommandHandler* handler) {
         mHandler = handler;
     }
 
diff --git a/src/utils/TerribleCommandBuffer.h b/src/utils/TerribleCommandBuffer.h
index 45aec93..dd45f63 100644
--- a/src/utils/TerribleCommandBuffer.h
+++ b/src/utils/TerribleCommandBuffer.h
@@ -19,12 +19,12 @@
 
 namespace utils {
 
-    class TerribleCommandBuffer : public dawn_wire::CommandSerializer {
+    class TerribleCommandBuffer : public dawn::wire::CommandSerializer {
       public:
         TerribleCommandBuffer();
-        TerribleCommandBuffer(dawn_wire::CommandHandler* handler);
+        TerribleCommandBuffer(dawn::wire::CommandHandler* handler);
 
-        void SetHandler(dawn_wire::CommandHandler* handler);
+        void SetHandler(dawn::wire::CommandHandler* handler);
 
         size_t GetMaximumAllocationSize() const override;
 
@@ -32,7 +32,7 @@
         bool Flush() override;
 
       private:
-        dawn_wire::CommandHandler* mHandler = nullptr;
+        dawn::wire::CommandHandler* mHandler = nullptr;
         size_t mOffset = 0;
         char mBuffer[1000000];
     };
diff --git a/src/utils/WireHelper.cpp b/src/utils/WireHelper.cpp
index 32be5cf..698385e 100644
--- a/src/utils/WireHelper.cpp
+++ b/src/utils/WireHelper.cpp
@@ -34,10 +34,10 @@
 
     namespace {
 
-        class WireServerTraceLayer : public dawn_wire::CommandHandler {
+        class WireServerTraceLayer : public dawn::wire::CommandHandler {
           public:
-            WireServerTraceLayer(const char* dir, dawn_wire::CommandHandler* handler)
-                : dawn_wire::CommandHandler(), mDir(dir), mHandler(handler) {
+            WireServerTraceLayer(const char* dir, dawn::wire::CommandHandler* handler)
+                : dawn::wire::CommandHandler(), mDir(dir), mHandler(handler) {
                 const char* sep = GetPathSeparator();
                 if (mDir.size() > 0 && mDir.back() != *sep) {
                     mDir += sep;
@@ -75,7 +75,7 @@
 
           private:
             std::string mDir;
-            dawn_wire::CommandHandler* mHandler;
+            dawn::wire::CommandHandler* mHandler;
             std::ofstream mFile;
         };
 
@@ -108,11 +108,11 @@
                 mC2sBuf = std::make_unique<utils::TerribleCommandBuffer>();
                 mS2cBuf = std::make_unique<utils::TerribleCommandBuffer>();
 
-                dawn_wire::WireServerDescriptor serverDesc = {};
+                dawn::wire::WireServerDescriptor serverDesc = {};
                 serverDesc.procs = &dawn_native::GetProcs();
                 serverDesc.serializer = mS2cBuf.get();
 
-                mWireServer.reset(new dawn_wire::WireServer(serverDesc));
+                mWireServer.reset(new dawn::wire::WireServer(serverDesc));
                 mC2sBuf->SetHandler(mWireServer.get());
 
                 if (wireTraceDir != nullptr && strlen(wireTraceDir) > 0) {
@@ -121,12 +121,12 @@
                     mC2sBuf->SetHandler(mWireServerTraceLayer.get());
                 }
 
-                dawn_wire::WireClientDescriptor clientDesc = {};
+                dawn::wire::WireClientDescriptor clientDesc = {};
                 clientDesc.serializer = mC2sBuf.get();
 
-                mWireClient.reset(new dawn_wire::WireClient(clientDesc));
+                mWireClient.reset(new dawn::wire::WireClient(clientDesc));
                 mS2cBuf->SetHandler(mWireClient.get());
-                dawnProcSetProcs(&dawn_wire::client::GetProcs());
+                dawnProcSetProcs(&dawn::wire::client::GetProcs());
             }
 
             std::pair<wgpu::Device, WGPUDevice> RegisterDevice(WGPUDevice backendDevice) override {
@@ -157,8 +157,8 @@
             std::unique_ptr<utils::TerribleCommandBuffer> mC2sBuf;
             std::unique_ptr<utils::TerribleCommandBuffer> mS2cBuf;
             std::unique_ptr<WireServerTraceLayer> mWireServerTraceLayer;
-            std::unique_ptr<dawn_wire::WireServer> mWireServer;
-            std::unique_ptr<dawn_wire::WireClient> mWireClient;
+            std::unique_ptr<dawn::wire::WireServer> mWireServer;
+            std::unique_ptr<dawn::wire::WireClient> mWireClient;
         };
 
     }  // anonymous namespace
