diff --git a/src/error_unittest.cc b/src/error_unittest.cc
index 85633de..0486e86 100644
--- a/src/error_unittest.cc
+++ b/src/error_unittest.cc
@@ -13,50 +13,37 @@
 ErrorPtr GenerateNetworkError() {
   tracked_objects::Location loc("GenerateNetworkError", "error_unittest.cc", 15,
                                 ::tracked_objects::GetProgramCounter());
-  return Error::Create(loc, "network", "not_found", "Resource not found");
+  return Error::Create(loc, "not_found", "Resource not found");
 }
 
 ErrorPtr GenerateHttpError() {
   ErrorPtr inner = GenerateNetworkError();
-  return Error::Create(FROM_HERE, "HTTP", "404", "Not found", std::move(inner));
+  return Error::Create(FROM_HERE, "404", "Not found", std::move(inner));
 }
 
 }  // namespace
 
 TEST(Error, Single) {
   ErrorPtr err = GenerateNetworkError();
-  EXPECT_EQ("network", err->GetDomain());
   EXPECT_EQ("not_found", err->GetCode());
   EXPECT_EQ("Resource not found", err->GetMessage());
   EXPECT_EQ("GenerateNetworkError", err->GetLocation().function_name);
   EXPECT_EQ("error_unittest.cc", err->GetLocation().file_name);
   EXPECT_EQ(15, err->GetLocation().line_number);
   EXPECT_EQ(nullptr, err->GetInnerError());
-  EXPECT_TRUE(err->HasDomain("network"));
-  EXPECT_FALSE(err->HasDomain("HTTP"));
-  EXPECT_FALSE(err->HasDomain("foo"));
-  EXPECT_TRUE(err->HasError("network", "not_found"));
-  EXPECT_FALSE(err->HasError("network", "404"));
-  EXPECT_FALSE(err->HasError("HTTP", "404"));
-  EXPECT_FALSE(err->HasError("HTTP", "not_found"));
-  EXPECT_FALSE(err->HasError("foo", "bar"));
+  EXPECT_TRUE(err->HasError("not_found"));
+  EXPECT_FALSE(err->HasError("404"));
+  EXPECT_FALSE(err->HasError("bar"));
 }
 
 TEST(Error, Nested) {
   ErrorPtr err = GenerateHttpError();
-  EXPECT_EQ("HTTP", err->GetDomain());
   EXPECT_EQ("404", err->GetCode());
   EXPECT_EQ("Not found", err->GetMessage());
   EXPECT_NE(nullptr, err->GetInnerError());
-  EXPECT_EQ("network", err->GetInnerError()->GetDomain());
-  EXPECT_TRUE(err->HasDomain("network"));
-  EXPECT_TRUE(err->HasDomain("HTTP"));
-  EXPECT_FALSE(err->HasDomain("foo"));
-  EXPECT_TRUE(err->HasError("network", "not_found"));
-  EXPECT_FALSE(err->HasError("network", "404"));
-  EXPECT_TRUE(err->HasError("HTTP", "404"));
-  EXPECT_FALSE(err->HasError("HTTP", "not_found"));
-  EXPECT_FALSE(err->HasError("foo", "bar"));
+  EXPECT_TRUE(err->HasError("not_found"));
+  EXPECT_TRUE(err->HasError("404"));
+  EXPECT_FALSE(err->HasError("bar"));
 }
 
 TEST(Error, Clone) {
@@ -66,7 +53,6 @@
   const Error* error2 = clone.get();
   while (error1 && error2) {
     EXPECT_NE(error1, error2);
-    EXPECT_EQ(error1->GetDomain(), error2->GetDomain());
     EXPECT_EQ(error1->GetCode(), error2->GetCode());
     EXPECT_EQ(error1->GetMessage(), error2->GetMessage());
     EXPECT_EQ(error1->GetLocation().function_name,
