aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2016-01-21 17:15:58 -0800
committerVitaly Buka <vitalybuka@google.com>2016-01-22 21:43:25 +0000
commit48a8669ddc2e8d785aad9ad18a5abbf8f1224fde (patch)
treef2e3ebf331594c3164f26e27f583eb77f544f507
parent50a147a0d09185e0e0f6913e2b8bc33734a54f3f (diff)
downloadlibweave-48a8669ddc2e8d785aad9ad18a5abbf8f1224fde.tar.gz
Remove domain from weave::Error
We don't filter out errors by domain in libweave. BUG:26071451 Change-Id: I2114450aca1c8ede71cc45f19bd8e71d3464cb73 Reviewed-on: https://weave-review.googlesource.com/2289 Reviewed-by: Alex Vakulenko <avakulenko@google.com>
-rw-r--r--examples/daemon/ledflasher/ledflasher.cc4
-rw-r--r--examples/daemon/light/light.cc6
-rw-r--r--examples/daemon/lock/lock.cc6
-rw-r--r--examples/daemon/oven/oven.cc4
-rw-r--r--examples/daemon/sample/sample.cc4
-rw-r--r--examples/provider/curl_http_client.cc2
-rw-r--r--examples/provider/event_http_client.cc4
-rw-r--r--examples/provider/ssl_stream.cc2
-rw-r--r--examples/provider/wifi_manager.cc4
-rw-r--r--include/weave/error.h39
-rw-r--r--src/base_api_handler.cc3
-rw-r--r--src/commands/cloud_command_proxy_unittest.cc2
-rw-r--r--src/commands/command_instance.cc16
-rw-r--r--src/commands/command_instance_unittest.cc2
-rw-r--r--src/commands/schema_constants.cc1
-rw-r--r--src/commands/schema_constants.h2
-rw-r--r--src/component_manager_impl.cc85
-rw-r--r--src/device_manager.cc5
-rw-r--r--src/device_registration_info.cc46
-rw-r--r--src/device_registration_info.h4
-rw-r--r--src/device_registration_info_unittest.cc6
-rw-r--r--src/error.cc51
-rw-r--r--src/error_unittest.cc30
-rw-r--r--src/json_error_codes.cc1
-rw-r--r--src/json_error_codes.h2
-rw-r--r--src/privet/auth_manager.cc40
-rw-r--r--src/privet/cloud_delegate.cc17
-rw-r--r--src/privet/constants.cc2
-rw-r--r--src/privet/constants.h2
-rw-r--r--src/privet/privet_handler.cc85
-rw-r--r--src/privet/privet_handler_unittest.cc20
-rw-r--r--src/privet/security_manager.cc44
-rw-r--r--src/privet/wifi_bootstrap_manager.cc8
-rw-r--r--src/utils.cc7
-rw-r--r--src/utils.h1
-rw-r--r--src/weave_unittest.cc13
36 files changed, 214 insertions, 356 deletions
diff --git a/examples/daemon/ledflasher/ledflasher.cc b/examples/daemon/ledflasher/ledflasher.cc
index 2e38d95..369b003 100644
--- a/examples/daemon/ledflasher/ledflasher.cc
+++ b/examples/daemon/ledflasher/ledflasher.cc
@@ -102,7 +102,7 @@ class LedFlasherHandler {
return;
}
weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+ weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
"Invalid parameters");
cmd->Abort(error.get(), nullptr);
}
@@ -124,7 +124,7 @@ class LedFlasherHandler {
return;
}
weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+ weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
"Invalid parameters");
cmd->Abort(error.get(), nullptr);
}
diff --git a/examples/daemon/light/light.cc b/examples/daemon/light/light.cc
index 298fcaf..a78231f 100644
--- a/examples/daemon/light/light.cc
+++ b/examples/daemon/light/light.cc
@@ -215,7 +215,7 @@ class LightHandler {
return;
}
weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+ weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
"Invalid parameters");
cmd->Abort(error.get(), nullptr);
}
@@ -241,7 +241,7 @@ class LightHandler {
return;
}
weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+ weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
"Invalid parameters");
cmd->Abort(error.get(), nullptr);
}
@@ -275,7 +275,7 @@ class LightHandler {
}
weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+ weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
"Invalid parameters");
cmd->Abort(error.get(), nullptr);
}
diff --git a/examples/daemon/lock/lock.cc b/examples/daemon/lock/lock.cc
index 0785c14..fcc6ad7 100644
--- a/examples/daemon/lock/lock.cc
+++ b/examples/daemon/lock/lock.cc
@@ -98,8 +98,8 @@ class LockHandler {
if (!weave::StringToEnum(requested_state, &new_lock_status)) {
// Invalid lock state was specified.
weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "example",
- "invalid_parameter_value", "Invalid parameters");
+ weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
+ "Invalid parameters");
cmd->Abort(error.get(), nullptr);
return;
}
@@ -114,7 +114,7 @@ class LockHandler {
return;
}
weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+ weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
"Invalid parameters");
cmd->Abort(error.get(), nullptr);
}
diff --git a/examples/daemon/oven/oven.cc b/examples/daemon/oven/oven.cc
index ff1c60b..daf1971 100644
--- a/examples/daemon/oven/oven.cc
+++ b/examples/daemon/oven/oven.cc
@@ -191,7 +191,7 @@ class OvenHandler {
}
weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+ weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
"Invalid parameters");
cmd->Abort(error.get(), nullptr);
}
@@ -215,7 +215,7 @@ class OvenHandler {
}
weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+ weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
"Invalid parameters");
cmd->Abort(error.get(), nullptr);
}
diff --git a/examples/daemon/sample/sample.cc b/examples/daemon/sample/sample.cc
index f4ad3d9..7e58193 100644
--- a/examples/daemon/sample/sample.cc
+++ b/examples/daemon/sample/sample.cc
@@ -88,8 +88,8 @@ class SampleHandler {
std::string name;
if (!params.GetString("name", &name)) {
weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "example",
- "invalid_parameter_value", "Name is missing");
+ weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
+ "Name is missing");
cmd->Abort(error.get(), nullptr);
return;
}
diff --git a/examples/provider/curl_http_client.cc b/examples/provider/curl_http_client.cc
index de8b3dd..2b1fac3 100644
--- a/examples/provider/curl_http_client.cc
+++ b/examples/provider/curl_http_client.cc
@@ -109,7 +109,7 @@ SendRequestBlocking(CurlHttpClient::Method method,
ErrorPtr error;
if (res != CURLE_OK) {
- Error::AddTo(&error, FROM_HERE, "curl", "curl_easy_perform_error",
+ Error::AddTo(&error, FROM_HERE, "curl_easy_perform_error",
curl_easy_strerror(res));
return {nullptr, std::move(error)};
}
diff --git a/examples/provider/event_http_client.cc b/examples/provider/event_http_client.cc
index fbfc6d8..0346a67 100644
--- a/examples/provider/event_http_client.cc
+++ b/examples/provider/event_http_client.cc
@@ -60,7 +60,7 @@ void RequestDoneCallback(evhttp_request* req, void* ctx) {
if (!req) {
ErrorPtr error;
auto err = EVUTIL_SOCKET_ERROR();
- Error::AddToPrintf(&error, FROM_HERE, "http_client", "request_failed",
+ Error::AddToPrintf(&error, FROM_HERE, "request_failed",
"request failed: %s",
evutil_socket_error_to_string(err));
state->task_runner_->PostDelayedTask(
@@ -134,7 +134,7 @@ void EventHttpClient::SendRequest(Method method,
if (res >= 0)
return;
ErrorPtr error;
- Error::AddToPrintf(&error, FROM_HERE, "http_client", "request_failed",
+ Error::AddToPrintf(&error, FROM_HERE, "request_failed",
"request failed: %s %s", EnumToString(method).c_str(),
url.c_str());
task_runner_->PostDelayedTask(
diff --git a/examples/provider/ssl_stream.cc b/examples/provider/ssl_stream.cc
index eea28c0..8c1a756 100644
--- a/examples/provider/ssl_stream.cc
+++ b/examples/provider/ssl_stream.cc
@@ -21,7 +21,7 @@ void AddSslError(ErrorPtr* error,
unsigned long ssl_error_code) {
ERR_load_BIO_strings();
SSL_load_error_strings();
- Error::AddToPrintf(error, location, "ssl_stream", error_code, "%s: %s",
+ Error::AddToPrintf(error, location, error_code, "%s: %s",
ERR_lib_error_string(ssl_error_code),
ERR_reason_error_string(ssl_error_code));
}
diff --git a/examples/provider/wifi_manager.cc b/examples/provider/wifi_manager.cc
index ed6a9fd..cad882d 100644
--- a/examples/provider/wifi_manager.cc
+++ b/examples/provider/wifi_manager.cc
@@ -84,7 +84,7 @@ void WifiImpl::TryToConnect(const std::string& ssid,
if (base::Time::Now() >= until) {
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, "wifi", "timeout",
+ Error::AddTo(&error, FROM_HERE, "timeout",
"Timeout connecting to WiFI network.");
task_runner_->PostDelayedTask(
FROM_HERE, base::Bind(callback, base::Passed(&error)), {});
@@ -105,7 +105,7 @@ void WifiImpl::Connect(const std::string& ssid,
CHECK(!hostapd_started_);
if (hostapd_started_) {
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, "wifi", "busy", "Running Access Point.");
+ Error::AddTo(&error, FROM_HERE, "busy", "Running Access Point.");
task_runner_->PostDelayedTask(
FROM_HERE, base::Bind(callback, base::Passed(&error)), {});
return;
diff --git a/include/weave/error.h b/include/weave/error.h
index 14a85be..64b99bd 100644
--- a/include/weave/error.h
+++ b/include/weave/error.h
@@ -26,11 +26,9 @@ class LIBWEAVE_EXPORT Error final {
// Creates an instance of Error class.
static ErrorPtr Create(const tracked_objects::Location& location,
- const std::string& domain,
const std::string& code,
const std::string& message);
static ErrorPtr Create(const tracked_objects::Location& location,
- const std::string& domain,
const std::string& code,
const std::string& message,
ErrorPtr inner_error);
@@ -39,23 +37,20 @@ class LIBWEAVE_EXPORT Error final {
// the error chain pointed to by |error|.
static void AddTo(ErrorPtr* error,
const tracked_objects::Location& location,
- const std::string& domain,
const std::string& code,
const std::string& message);
// Same as the Error::AddTo above, but allows to pass in a printf-like
// format string and optional parameters to format the error message.
static void AddToPrintf(ErrorPtr* error,
const tracked_objects::Location& location,
- const std::string& domain,
const std::string& code,
const char* format,
- ...) PRINTF_FORMAT(5, 6);
+ ...) PRINTF_FORMAT(4, 5);
// Clones error with all inner errors.
ErrorPtr Clone() const;
- // Returns the error domain, code and message
- const std::string& GetDomain() const { return domain_; }
+ // Returns the error code and message
const std::string& GetCode() const { return code_; }
const std::string& GetMessage() const { return message_; }
@@ -64,13 +59,9 @@ class LIBWEAVE_EXPORT Error final {
return location_;
}
- // Checks if this or any of the inner errors in the chain has the specified
- // error domain.
- bool HasDomain(const std::string& domain) const;
-
// Checks if this or any of the inner errors in the chain matches the
- // specified error domain and code.
- bool HasError(const std::string& domain, const std::string& code) const;
+ // specified error code.
+ bool HasError(const std::string& code) const;
// Gets a pointer to the inner error, if present. Returns nullptr otherwise.
const Error* GetInnerError() const { return inner_error_.get(); }
@@ -79,41 +70,27 @@ class LIBWEAVE_EXPORT Error final {
// Returns itself if no inner error are available.
const Error* GetFirstError() const;
- // Finds an error object of particular domain in the error chain stating at
- // |error_chain_start|. Returns the a pointer to the first matching error
- // object found.
- // Returns nullptr if no match is found.
- // This method is safe to call on a nullptr |error_chain_start| in which case
- // the result will also be nullptr.
- static const Error* FindErrorOfDomain(const Error* error_chain_start,
- const std::string& domain);
- // Finds an error of particular domain with the given code in the error chain
- // stating at |error_chain_start|. Returns the pointer to the first matching
- // error object.
+ // Finds an error with the given code in the error chain stating at
+ // |error_chain_start|. Returns the pointer to the first matching error
+ // object.
// Returns nullptr if no match is found or if |error_chain_start| is nullptr.
static const Error* FindError(const Error* error_chain_start,
- const std::string& domain,
const std::string& code);
protected:
// Constructor is protected since this object is supposed to be
// created via the Create factory methods.
Error(const tracked_objects::Location& location,
- const std::string& domain,
const std::string& code,
const std::string& message,
ErrorPtr inner_error);
Error(const tracked_objects::LocationSnapshot& location,
- const std::string& domain,
const std::string& code,
const std::string& message,
ErrorPtr inner_error);
- // Error domain. The domain defines the scopes for error codes.
- // Two errors with the same code but different domains are different errors.
- std::string domain_;
- // Error code. A unique error code identifier within the given domain.
+ // Error code. A unique error code identifier.
std::string code_;
// Human-readable error message.
std::string message_;
diff --git a/src/base_api_handler.cc b/src/base_api_handler.cc
index 5562b6c..312e20b 100644
--- a/src/base_api_handler.cc
+++ b/src/base_api_handler.cc
@@ -143,8 +143,7 @@ void BaseApiHandler::UpdateBaseConfiguration(
AuthScope auth_scope{AuthScope::kNone};
if (!StringToEnum(anonymous_access_role, &auth_scope)) {
ErrorPtr error;
- Error::AddToPrintf(&error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kInvalidPropValue,
+ Error::AddToPrintf(&error, FROM_HERE, errors::commands::kInvalidPropValue,
"Invalid localAnonymousAccessMaxRole value '%s'",
anonymous_access_role.c_str());
command->Abort(error.get(), nullptr);
diff --git a/src/commands/cloud_command_proxy_unittest.cc b/src/commands/cloud_command_proxy_unittest.cc
index 0e998ef..013769d 100644
--- a/src/commands/cloud_command_proxy_unittest.cc
+++ b/src/commands/cloud_command_proxy_unittest.cc
@@ -192,7 +192,7 @@ TEST_F(CloudCommandProxyTest, RetryFailed) {
*CreateDictionaryValue("{'status': 'ready'}"), nullptr));
task_runner_.Run();
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, "TEST", "TEST", "TEST");
+ Error::AddTo(&error, FROM_HERE, "TEST", "TEST");
callback.Run(error->Clone());
task_runner_.Run();
EXPECT_GE(task_runner_.GetClock()->Now() - started,
diff --git a/src/commands/command_instance.cc b/src/commands/command_instance.cc
index da62887..dba14c4 100644
--- a/src/commands/command_instance.cc
+++ b/src/commands/command_instance.cc
@@ -37,8 +37,7 @@ const EnumToStringMap<Command::Origin>::Map kMapOrigin[] = {
bool ReportInvalidStateTransition(ErrorPtr* error,
Command::State from,
Command::State to) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kInvalidState,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kInvalidState,
"State switch impossible: '%s' -> '%s'",
EnumToString(from).c_str(), EnumToString(to).c_str());
return false;
@@ -153,8 +152,7 @@ std::unique_ptr<base::DictionaryValue> GetCommandParameters(
// Make sure the "parameters" property is actually an object.
const base::DictionaryValue* params_dict = nullptr;
if (!params_value->GetAsDictionary(&params_dict)) {
- Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain,
- errors::json::kObjectExpected,
+ Error::AddToPrintf(error, FROM_HERE, errors::json::kObjectExpected,
"Property '%s' must be a JSON object",
commands::attributes::kCommand_Parameters);
return params;
@@ -182,8 +180,7 @@ std::unique_ptr<CommandInstance> CommandInstance::FromJson(
// Get the command JSON object from the value.
const base::DictionaryValue* json = nullptr;
if (!value->GetAsDictionary(&json)) {
- Error::AddTo(error, FROM_HERE, errors::json::kDomain,
- errors::json::kObjectExpected,
+ Error::AddTo(error, FROM_HERE, errors::json::kObjectExpected,
"Command instance is not a JSON object");
command_id->clear();
return instance;
@@ -196,15 +193,14 @@ std::unique_ptr<CommandInstance> CommandInstance::FromJson(
// Get the command name from 'name' property.
std::string command_name;
if (!json->GetString(commands::attributes::kCommand_Name, &command_name)) {
- Error::AddTo(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kPropertyMissing, "Command name is missing");
+ Error::AddTo(error, FROM_HERE, errors::commands::kPropertyMissing,
+ "Command name is missing");
return instance;
}
auto parameters = GetCommandParameters(json, error);
if (!parameters) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kCommandFailed,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kCommandFailed,
"Failed to validate command '%s'", command_name.c_str());
return instance;
}
diff --git a/src/commands/command_instance_unittest.cc b/src/commands/command_instance_unittest.cc
index 8d70b8b..803d5b4 100644
--- a/src/commands/command_instance_unittest.cc
+++ b/src/commands/command_instance_unittest.cc
@@ -143,7 +143,7 @@ TEST(CommandInstanceTest, ToJsonError) {
instance->SetID("testId");
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, "DOMAIN", "CODE", "MESSAGE");
+ Error::AddTo(&error, FROM_HERE, "CODE", "MESSAGE");
instance->Abort(error.get(), nullptr);
json->MergeDictionary(CreateDictionaryValue(R"({
diff --git a/src/commands/schema_constants.cc b/src/commands/schema_constants.cc
index 34d6db8..732cf44 100644
--- a/src/commands/schema_constants.cc
+++ b/src/commands/schema_constants.cc
@@ -8,7 +8,6 @@ namespace weave {
namespace errors {
namespace commands {
-const char kDomain[] = "command_schema";
const char kTypeMismatch[] = "type_mismatch";
const char kInvalidPropValue[] = "invalid_parameter_value";
diff --git a/src/commands/schema_constants.h b/src/commands/schema_constants.h
index 9199480..360079a 100644
--- a/src/commands/schema_constants.h
+++ b/src/commands/schema_constants.h
@@ -9,8 +9,6 @@ namespace weave {
namespace errors {
namespace commands {
-// Error domain for command schema description.
-extern const char kDomain[];
// Common command definition error codes.
extern const char kTypeMismatch[];
diff --git a/src/component_manager_impl.cc b/src/component_manager_impl.cc
index 3f6ebf9..a4f5740 100644
--- a/src/component_manager_impl.cc
+++ b/src/component_manager_impl.cc
@@ -47,8 +47,7 @@ bool ComponentManagerImpl::AddComponent(const std::string& path,
return false;
}
if (root->GetWithoutPathExpansion(name, nullptr)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kInvalidState,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kInvalidState,
"Component '%s' already exists at path '%s'",
name.c_str(), path.c_str());
return false;
@@ -57,8 +56,7 @@ bool ComponentManagerImpl::AddComponent(const std::string& path,
// Check to make sure the declared traits are already defined.
for (const std::string& trait : traits) {
if (!FindTraitDefinition(trait)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kInvalidPropValue,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kInvalidPropValue,
"Trait '%s' is undefined", trait.c_str());
return false;
}
@@ -110,8 +108,7 @@ bool ComponentManagerImpl::RemoveComponent(const std::string& path,
}
if (!root->RemoveWithoutPathExpansion(name, nullptr)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kInvalidState,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kInvalidState,
"Component '%s' does not exist at path '%s'",
name.c_str(), path.c_str());
return false;
@@ -135,8 +132,7 @@ bool ComponentManagerImpl::RemoveComponentArrayItem(const std::string& path,
base::ListValue* array_value = nullptr;
if (!root->GetListWithoutPathExpansion(name, &array_value)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kInvalidState,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kInvalidState,
"There is no component array named '%s' at path '%s'",
name.c_str(), path.c_str());
return false;
@@ -144,8 +140,7 @@ bool ComponentManagerImpl::RemoveComponentArrayItem(const std::string& path,
if (!array_value->Remove(index, nullptr)) {
Error::AddToPrintf(
- error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kInvalidState,
+ error, FROM_HERE, errors::commands::kInvalidState,
"Component array '%s' at path '%s' does not have an element %zu",
name.c_str(), path.c_str(), index);
return false;
@@ -170,8 +165,7 @@ bool ComponentManagerImpl::LoadTraits(const base::DictionaryValue& dict,
// definition is exactly the same, or else this is an error.
for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
if (it.value().GetType() != base::Value::TYPE_DICTIONARY) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kTypeMismatch,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kTypeMismatch,
"Trait '%s' must be an object", it.key().c_str());
result = false;
break;
@@ -179,8 +173,7 @@ bool ComponentManagerImpl::LoadTraits(const base::DictionaryValue& dict,
const base::DictionaryValue* existing_def = nullptr;
if (traits_.GetDictionary(it.key(), &existing_def)) {
if (!existing_def->Equals(&it.value())) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kTypeMismatch,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kTypeMismatch,
"Trait '%s' cannot be redefined", it.key().c_str());
result = false;
break;
@@ -240,10 +233,10 @@ std::unique_ptr<CommandInstance> ComponentManagerImpl::ParseCommandInstance(
return nullptr;
if (role < minimal_role) {
- Error::AddToPrintf(
- error, FROM_HERE, errors::commands::kDomain, "access_denied",
- "User role '%s' less than minimal: '%s'", EnumToString(role).c_str(),
- EnumToString(minimal_role).c_str());
+ Error::AddToPrintf(error, FROM_HERE, "access_denied",
+ "User role '%s' less than minimal: '%s'",
+ EnumToString(role).c_str(),
+ EnumToString(minimal_role).c_str());
return nullptr;
}
@@ -256,7 +249,7 @@ std::unique_ptr<CommandInstance> ComponentManagerImpl::ParseCommandInstance(
component_path = FindComponentWithTrait(trait_name);
if (component_path.empty()) {
Error::AddToPrintf(
- error, FROM_HERE, errors::commands::kDomain, "unrouted_command",
+ error, FROM_HERE, "unrouted_command",
"Unable route command '%s' because there is no component supporting"
"trait '%s'",
command_instance->GetName().c_str(), trait_name.c_str());
@@ -286,8 +279,7 @@ std::unique_ptr<CommandInstance> ComponentManagerImpl::ParseCommandInstance(
}
if (!trait_supported) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- "trait_not_supported",
+ Error::AddToPrintf(error, FROM_HERE, "trait_not_supported",
"Component '%s' doesn't support trait '%s'",
component_path.c_str(), pair.first.c_str());
return nullptr;
@@ -361,8 +353,7 @@ bool ComponentManagerImpl::GetMinimalRole(const std::string& command_name,
ErrorPtr* error) const {
const base::DictionaryValue* command = FindCommandDefinition(command_name);
if (!command) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kInvalidCommandName,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kInvalidCommandName,
"Command definition for '%s' not found",
command_name.c_str());
return false;
@@ -423,14 +414,12 @@ const base::Value* ComponentManagerImpl::GetStateProperty(
return nullptr;
auto pair = SplitAtFirst(name, ".", true);
if (pair.first.empty()) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kPropertyMissing,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kPropertyMissing,
"Empty state package in '%s'", name.c_str());
return nullptr;
}
if (pair.second.empty()) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kPropertyMissing,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kPropertyMissing,
"State property name not specified in '%s'",
name.c_str());
return nullptr;
@@ -438,8 +427,7 @@ const base::Value* ComponentManagerImpl::GetStateProperty(
std::string key = base::StringPrintf("state.%s", name.c_str());
const base::Value* value = nullptr;
if (!component->Get(key, &value)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kPropertyMissing,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kPropertyMissing,
"State property '%s' not found in component '%s'",
name.c_str(), component_path.c_str());
}
@@ -453,14 +441,12 @@ bool ComponentManagerImpl::SetStateProperty(const std::string& component_path,
base::DictionaryValue dict;
auto pair = SplitAtFirst(name, ".", true);
if (pair.first.empty()) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kPropertyMissing,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kPropertyMissing,
"Empty state package in '%s'", name.c_str());
return false;
}
if (pair.second.empty()) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kPropertyMissing,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kPropertyMissing,
"State property name not specified in '%s'",
name.c_str());
return false;
@@ -532,8 +518,7 @@ bool ComponentManagerImpl::AddLegacyCommandDefinitions(
for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
const base::DictionaryValue* command_dict = nullptr;
if (!it.value().GetAsDictionary(&command_dict)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kTypeMismatch,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kTypeMismatch,
"Package '%s' must be an object", it.key().c_str());
result = false;
continue;
@@ -544,7 +529,7 @@ bool ComponentManagerImpl::AddLegacyCommandDefinitions(
std::string key = base::StringPrintf("%s.commands.%s", it.key().c_str(),
it_def.key().c_str());
if (traits_.GetDictionary(key, nullptr)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
+ Error::AddToPrintf(error, FROM_HERE,
errors::commands::kInvalidPropValue,
"Redefining command '%s.%s'", it.key().c_str(),
it_def.key().c_str());
@@ -571,8 +556,7 @@ bool ComponentManagerImpl::AddLegacyStateDefinitions(
for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
const base::DictionaryValue* state_dict = nullptr;
if (!it.value().GetAsDictionary(&state_dict)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kTypeMismatch,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kTypeMismatch,
"Package '%s' must be an object", it.key().c_str());
result = false;
continue;
@@ -583,7 +567,7 @@ bool ComponentManagerImpl::AddLegacyStateDefinitions(
std::string key = base::StringPrintf("%s.state.%s", it.key().c_str(),
it_def.key().c_str());
if (traits_.GetDictionary(key, nullptr)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
+ Error::AddToPrintf(error, FROM_HERE,
errors::commands::kInvalidPropValue,
"Redefining state property '%s.%s'",
it.key().c_str(), it_def.key().c_str());
@@ -689,15 +673,13 @@ const base::DictionaryValue* ComponentManagerImpl::FindComponentAt(
auto element = SplitAtFirst(parts[i], "[", true);
int array_index = -1;
if (element.first.empty()) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kPropertyMissing,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kPropertyMissing,
"Empty path element at '%s'", root_path.c_str());
return nullptr;
}
if (!element.second.empty()) {
if (element.second.back() != ']') {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kPropertyMissing,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kPropertyMissing,
"Invalid array element syntax '%s'",
parts[i].c_str());
return nullptr;
@@ -707,7 +689,7 @@ const base::DictionaryValue* ComponentManagerImpl::FindComponentAt(
base::TrimWhitespaceASCII(element.second, base::TrimPositions::TRIM_ALL,
&index_str);
if (!base::StringToInt(index_str, &array_index) || array_index < 0) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
+ Error::AddToPrintf(error, FROM_HERE,
errors::commands::kInvalidPropValue,
"Invalid array index '%s'", element.second.c_str());
return nullptr;
@@ -719,8 +701,7 @@ const base::DictionaryValue* ComponentManagerImpl::FindComponentAt(
// points to the actual parent component. We need the root to point to
// the 'components' element containing child sub-components instead.
if (!root->GetDictionary("components", &root)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kPropertyMissing,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kPropertyMissing,
"Component '%s' does not exist at '%s'",
element.first.c_str(), root_path.c_str());
return nullptr;
@@ -729,23 +710,20 @@ const base::DictionaryValue* ComponentManagerImpl::FindComponentAt(
const base::Value* value = nullptr;
if (!root->GetWithoutPathExpansion(element.first, &value)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kPropertyMissing,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kPropertyMissing,
"Component '%s' does not exist at '%s'",
element.first.c_str(), root_path.c_str());
return nullptr;
}
if (value->GetType() == base::Value::TYPE_LIST && array_index < 0) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kTypeMismatch,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kTypeMismatch,
"Element '%s.%s' is an array", root_path.c_str(),
element.first.c_str());
return nullptr;
}
if (value->GetType() == base::Value::TYPE_DICTIONARY && array_index >= 0) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kTypeMismatch,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kTypeMismatch,
"Element '%s.%s' is not an array", root_path.c_str(),
element.first.c_str());
return nullptr;
@@ -759,8 +737,7 @@ const base::DictionaryValue* ComponentManagerImpl::FindComponentAt(
const base::Value* component_value = nullptr;
if (!component_array->Get(array_index, &component_value) ||
!component_value->GetAsDictionary(&root)) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- errors::commands::kPropertyMissing,
+ Error::AddToPrintf(error, FROM_HERE, errors::commands::kPropertyMissing,
"Element '%s.%s' does not contain item #%d",
root_path.c_str(), element.first.c_str(),
array_index);
diff --git a/src/device_manager.cc b/src/device_manager.cc
index 1158df7..04d7a6b 100644
--- a/src/device_manager.cc
+++ b/src/device_manager.cc
@@ -212,8 +212,7 @@ bool DeviceManager::SetStateProperties(const base::DictionaryValue& dict,
std::string component =
component_manager_->FindComponentWithTrait(it.key());
if (component.empty()) {
- Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
- "unrouted_state",
+ Error::AddToPrintf(error, FROM_HERE, "unrouted_state",
"Unable to set property value because there is no "
"component supporting "
"trait '%s'",
@@ -244,7 +243,7 @@ bool DeviceManager::SetStateProperty(const std::string& name,
std::string component = component_manager_->FindComponentWithTrait(trait);
if (component.empty()) {
Error::AddToPrintf(
- error, FROM_HERE, errors::commands::kDomain, "unrouted_state",
+ error, FROM_HERE, "unrouted_state",
"Unable set value of state property '%s' because there is no component "
"supporting trait '%s'",
name.c_str(), trait.c_str());
diff --git a/src/device_registration_info.cc b/src/device_registration_info.cc
index c374527..0c4a5d7 100644
--- a/src/device_registration_info.cc
+++ b/src/device_registration_info.cc
@@ -33,9 +33,6 @@
namespace weave {
-const char kErrorDomainOAuth2[] = "oauth2";
-const char kErrorDomainGCD[] = "gcd";
-const char kErrorDomainGCDServer[] = "gcd_server";
const char kErrorAlreayRegistered[] = "already_registered";
namespace {
@@ -55,8 +52,7 @@ const char kJustInCase[] = "just_in_case"; // Backup fetch when XMPP is live.
using provider::HttpClient;
inline void SetUnexpectedError(ErrorPtr* error) {
- Error::AddTo(error, FROM_HERE, kErrorDomainGCD, "unexpected_response",
- "Unexpected GCD error");
+ Error::AddTo(error, FROM_HERE, "unexpected_response", "Unexpected GCD error");
}
void ParseGCDError(const base::DictionaryValue* json, ErrorPtr* error) {
@@ -79,8 +75,7 @@ void ParseGCDError(const base::DictionaryValue* json, ErrorPtr* error) {
std::string error_code, error_message;
if (error_object->GetString("reason", &error_code) &&
error_object->GetString("message", &error_message)) {
- Error::AddTo(error, FROM_HERE, kErrorDomainGCDServer, error_code,
- error_message);
+ Error::AddTo(error, FROM_HERE, error_code, error_message);
} else {
SetUnexpectedError(error);
}
@@ -202,7 +197,7 @@ std::unique_ptr<base::DictionaryValue> ParseJsonResponse(
if (content_type != http::kJson && content_type != http::kPlain) {
Error::AddTo(
- error, FROM_HERE, errors::json::kDomain, "non_json_content_type",
+ error, FROM_HERE, "non_json_content_type",
"Unexpected content type: \'" + response.GetContentType() + "\'");
return std::unique_ptr<base::DictionaryValue>();
}
@@ -212,17 +207,16 @@ std::unique_ptr<base::DictionaryValue> ParseJsonResponse(
auto value = base::JSONReader::ReadAndReturnError(json, base::JSON_PARSE_RFC,
nullptr, &error_message);
if (!value) {
- Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain,
- errors::json::kParseError,
+ Error::AddToPrintf(error, FROM_HERE, errors::json::kParseError,
"Error '%s' occurred parsing JSON string '%s'",
error_message.c_str(), json.c_str());
return std::unique_ptr<base::DictionaryValue>();
}
base::DictionaryValue* dict_value = nullptr;
if (!value->GetAsDictionary(&dict_value)) {
- Error::AddToPrintf(
- error, FROM_HERE, errors::json::kDomain, errors::json::kObjectExpected,
- "Response is not a valid JSON object: '%s'", json.c_str());
+ Error::AddToPrintf(error, FROM_HERE, errors::json::kObjectExpected,
+ "Response is not a valid JSON object: '%s'",
+ json.c_str());
return std::unique_ptr<base::DictionaryValue>();
} else {
// |value| is now owned by |dict_value|, so release the scoped_ptr now.
@@ -335,7 +329,7 @@ bool DeviceRegistrationInfo::VerifyRegistrationCredentials(
VLOG(2) << "Device registration record "
<< ((have_credentials) ? "found" : "not found.");
if (!have_credentials)
- Error::AddTo(error, FROM_HERE, kErrorDomainGCD, "device_not_registered",
+ Error::AddTo(error, FROM_HERE, "device_not_registered",
"No valid device registration record found");
return have_credentials;
}
@@ -358,8 +352,7 @@ DeviceRegistrationInfo::ParseOAuthResponse(const HttpClient::Response& response,
if (!resp->GetString("error_description", &error_message)) {
error_message = "Unexpected OAuth error";
}
- Error::AddTo(error, FROM_HERE, kErrorDomainOAuth2, error_code,
- error_message);
+ Error::AddTo(error, FROM_HERE, error_code, error_message);
return std::unique_ptr<base::DictionaryValue>();
}
return resp;
@@ -416,8 +409,8 @@ void DeviceRegistrationInfo::OnRefreshAccessTokenDone(
!json->GetInteger("expires_in", &expires_in) || access_token_.empty() ||
expires_in <= 0) {
LOG(ERROR) << "Access token unavailable.";
- Error::AddTo(&error, FROM_HERE, kErrorDomainOAuth2,
- "unexpected_server_response", "Access token unavailable");
+ Error::AddTo(&error, FROM_HERE, "unexpected_server_response",
+ "Access token unavailable");
return callback.Run(std::move(error));
}
access_token_expiration_ =
@@ -526,8 +519,7 @@ void DeviceRegistrationInfo::RegisterDevice(const std::string& ticket_id,
const DoneCallback& callback) {
if (HaveRegistrationCredentials()) {
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, errors::kErrorDomain,
- kErrorAlreayRegistered,
+ Error::AddTo(&error, FROM_HERE, kErrorAlreayRegistered,
"Unable to register already registered device");
return RegisterDeviceError(callback, std::move(error));
}
@@ -595,7 +587,7 @@ void DeviceRegistrationInfo::RegisterDeviceOnTicketFinalized(
!json_resp->GetString("robotAccountAuthorizationCode", &auth_code) ||
!json_resp->GetDictionary("deviceDraft", &device_draft_response) ||
!device_draft_response->GetString("id", &cloud_id)) {
- Error::AddTo(&error, FROM_HERE, kErrorDomainGCD, "unexpected_response",
+ Error::AddTo(&error, FROM_HERE, "unexpected_response",
"Device account missing in response");
return RegisterDeviceError(callback, std::move(error));
}
@@ -630,7 +622,7 @@ void DeviceRegistrationInfo::RegisterDeviceOnAuthCodeSent(
!json_resp->GetString("refresh_token", &refresh_token) ||
!json_resp->GetInteger("expires_in", &expires_in) ||
access_token_.empty() || refresh_token.empty() || expires_in <= 0) {
- Error::AddTo(&error, FROM_HERE, kErrorDomainGCD, "unexpected_response",
+ Error::AddTo(&error, FROM_HERE, "unexpected_response",
"Device access_token missing in response");
return RegisterDeviceError(callback, std::move(error));
}
@@ -737,7 +729,7 @@ void DeviceRegistrationInfo::OnCloudRequestDone(
if (!IsSuccessful(*response)) {
ParseGCDError(json_resp.get(), &error);
if (status_code == http::kForbidden &&
- error->HasError(kErrorDomainGCDServer, "rateLimitExceeded")) {
+ error->HasError("rateLimitExceeded")) {
// If we exceeded server quota, retry the request later.
return RetryCloudRequest(data);
}
@@ -770,13 +762,13 @@ void DeviceRegistrationInfo::OnAccessTokenRefreshed(
}
void DeviceRegistrationInfo::CheckAccessTokenError(ErrorPtr error) {
- if (error && error->HasError(kErrorDomainOAuth2, "invalid_grant"))
+ if (error && error->HasError("invalid_grant"))
RemoveCredentials();
}
void DeviceRegistrationInfo::ConnectToCloud(ErrorPtr error) {
if (error) {
- if (error->HasError(kErrorDomainOAuth2, "invalid_grant"))
+ if (error->HasError("invalid_grant"))
RemoveCredentials();
return;
}
@@ -844,7 +836,7 @@ bool DeviceRegistrationInfo::UpdateServiceConfig(
const std::string& service_url,
ErrorPtr* error) {
if (HaveRegistrationCredentials()) {
- Error::AddTo(error, FROM_HERE, errors::kErrorDomain, kErrorAlreayRegistered,
+ Error::AddTo(error, FROM_HERE, kErrorAlreayRegistered,
"Unable to change config for registered device");
return false;
}
@@ -1012,7 +1004,7 @@ void DeviceRegistrationInfo::OnUpdateDeviceResourceDone(
}
void DeviceRegistrationInfo::OnUpdateDeviceResourceError(ErrorPtr error) {
- if (error->HasError(kErrorDomainGCDServer, "invalid_last_update_time_ms")) {
+ if (error->HasError("invalid_last_update_time_ms")) {
// If the server rejected our previous request, retrieve the latest
// timestamp from the server and retry.
VLOG(1) << "Getting the last device resource timestamp from server...";
diff --git a/src/device_registration_info.h b/src/device_registration_info.h
index 4a1c925..f670b68 100644
--- a/src/device_registration_info.h
+++ b/src/device_registration_info.h
@@ -45,10 +45,6 @@ namespace privet {
class AuthManager;
}
-extern const char kErrorDomainOAuth2[];
-extern const char kErrorDomainGCD[];
-extern const char kErrorDomainGCDServer[];
-
// The DeviceRegistrationInfo class represents device registration information.
class DeviceRegistrationInfo : public NotificationDelegate,
public CloudCommandUpdateInterface {
diff --git a/src/device_registration_info_unittest.cc b/src/device_registration_info_unittest.cc
index 595d749..cd11ac9 100644
--- a/src/device_registration_info_unittest.cc
+++ b/src/device_registration_info_unittest.cc
@@ -309,7 +309,7 @@ TEST_F(DeviceRegistrationInfoTest, CheckAuthenticationFailure) {
ErrorPtr error;
EXPECT_FALSE(RefreshAccessToken(&error));
- EXPECT_TRUE(error->HasError(kErrorDomainOAuth2, "unable_to_authenticate"));
+ EXPECT_TRUE(error->HasError("unable_to_authenticate"));
EXPECT_EQ(GcdState::kConnecting, GetGcdState());
}
@@ -338,7 +338,7 @@ TEST_F(DeviceRegistrationInfoTest, CheckDeregistration) {
ErrorPtr error;
EXPECT_FALSE(RefreshAccessToken(&error));
- EXPECT_TRUE(error->HasError(kErrorDomainOAuth2, "invalid_grant"));
+ EXPECT_TRUE(error->HasError("invalid_grant"));
EXPECT_EQ(GcdState::kInvalidCredentials, GetGcdState());
EXPECT_EQ(test_data::kCloudId, dev_reg_->GetSettings().cloud_id);
}
@@ -567,7 +567,7 @@ TEST_F(DeviceRegistrationInfoTest, ReRegisterDevice) {
bool done = false;
dev_reg_->RegisterDevice(
test_data::kClaimTicketId, base::Bind([this, &done](ErrorPtr error) {
- EXPECT_TRUE(error->HasError("weave", "already_registered"));
+ EXPECT_TRUE(error->HasError("already_registered"));
done = true;
task_runner_.Break();
EXPECT_EQ(GcdState::kConnecting, GetGcdState());
diff --git a/src/error.cc b/src/error.cc
index 89071df..ced91e5 100644
--- a/src/error.cc
+++ b/src/error.cc
@@ -11,7 +11,6 @@ namespace weave {
namespace {
inline void LogError(const tracked_objects::Location& location,
- const std::string& domain,
const std::string& code,
const std::string& message) {
// Use logging::LogMessage() directly instead of LOG(ERROR) to substitute
@@ -22,44 +21,39 @@ inline void LogError(const tracked_objects::Location& location,
logging::LOG_ERROR)
.stream()
<< location.function_name() << "(...): "
- << "Domain=" << domain << ", Code=" << code << ", Message=" << message;
+ << "Code=" << code << ", Message=" << message;
}
} // anonymous namespace
ErrorPtr Error::Create(const tracked_objects::Location& location,
- const std::string& domain,
const std::string& code,
const std::string& message) {
- return Create(location, domain, code, message, ErrorPtr());
+ return Create(location, code, message, ErrorPtr());
}
ErrorPtr Error::Create(const tracked_objects::Location& location,
- const std::string& domain,
const std::string& code,
const std::string& message,
ErrorPtr inner_error) {
- LogError(location, domain, code, message);
- return ErrorPtr(
- new Error(location, domain, code, message, std::move(inner_error)));
+ LogError(location, code, message);
+ return ErrorPtr(new Error(location, code, message, std::move(inner_error)));
}
void Error::AddTo(ErrorPtr* error,
const tracked_objects::Location& location,
- const std::string& domain,
const std::string& code,
const std::string& message) {
if (error) {
- *error = Create(location, domain, code, message, std::move(*error));
+ *error = Create(location, code, message, std::move(*error));
} else {
// Create already logs the error, but if |error| is nullptr,
// we still want to log the error...
- LogError(location, domain, code, message);
+ LogError(location, code, message);
}
}
void Error::AddToPrintf(ErrorPtr* error,
const tracked_objects::Location& location,
- const std::string& domain,
const std::string& code,
const char* format,
...) {
@@ -67,21 +61,17 @@ void Error::AddToPrintf(ErrorPtr* error,
va_start(ap, format);
std::string message = base::StringPrintV(format, ap);
va_end(ap);
- AddTo(error, location, domain, code, message);
+ AddTo(error, location, code, message);
}
ErrorPtr Error::Clone() const {
ErrorPtr inner_error = inner_error_ ? inner_error_->Clone() : nullptr;
return ErrorPtr(
- new Error(location_, domain_, code_, message_, std::move(inner_error)));
-}
-
-bool Error::HasDomain(const std::string& domain) const {
- return FindErrorOfDomain(this, domain) != nullptr;
+ new Error(location_, code_, message_, std::move(inner_error)));
}
-bool Error::HasError(const std::string& domain, const std::string& code) const {
- return FindError(this, domain, code) != nullptr;
+bool Error::HasError(const std::string& code) const {
+ return FindError(this, code) != nullptr;
}
const Error* Error::GetFirstError() const {
@@ -92,40 +82,25 @@ const Error* Error::GetFirstError() const {
}
Error::Error(const tracked_objects::Location& location,
- const std::string& domain,
const std::string& code,
const std::string& message,
ErrorPtr inner_error)
- : Error{tracked_objects::LocationSnapshot{location}, domain, code, message,
+ : Error{tracked_objects::LocationSnapshot{location}, code, message,
std::move(inner_error)} {}
Error::Error(const tracked_objects::LocationSnapshot& location,
- const std::string& domain,
const std::string& code,
const std::string& message,
ErrorPtr inner_error)
- : domain_(domain),
- code_(code),
+ : code_(code),
message_(message),
location_(location),
inner_error_(std::move(inner_error)) {}
-const Error* Error::FindErrorOfDomain(const Error* error_chain_start,
- const std::string& domain) {
- while (error_chain_start) {
- if (error_chain_start->GetDomain() == domain)
- break;
- error_chain_start = error_chain_start->GetInnerError();
- }
- return error_chain_start;
-}
-
const Error* Error::FindError(const Error* error_chain_start,
- const std::string& domain,
const std::string& code) {
while (error_chain_start) {
- if (error_chain_start->GetDomain() == domain &&
- error_chain_start->GetCode() == code)
+ if (error_chain_start->GetCode() == code)
break;
error_chain_start = error_chain_start->GetInnerError();
}
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 @@ namespace {
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 @@ TEST(Error, Clone) {
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,
diff --git a/src/json_error_codes.cc b/src/json_error_codes.cc
index 9bfaef0..647c0ba 100644
--- a/src/json_error_codes.cc
+++ b/src/json_error_codes.cc
@@ -8,7 +8,6 @@ namespace weave {
namespace errors {
namespace json {
-const char kDomain[] = "json_parser";
const char kParseError[] = "json_parse_error";
const char kObjectExpected[] = "json_object_expected";
} // namespace json
diff --git a/src/json_error_codes.h b/src/json_error_codes.h
index 5d3f07b..551eaac 100644
--- a/src/json_error_codes.h
+++ b/src/json_error_codes.h
@@ -10,8 +10,6 @@ namespace weave {
namespace errors {
namespace json {
-extern const char kDomain[];
-
extern const char kParseError[];
extern const char kObjectExpected[];
} // namespace json
diff --git a/src/privet/auth_manager.cc b/src/privet/auth_manager.cc
index 8373a7e..0753a2b 100644
--- a/src/privet/auth_manager.cc
+++ b/src/privet/auth_manager.cc
@@ -65,13 +65,12 @@ bool CheckCaveatType(const UwMacaroonCaveat& caveat,
ErrorPtr* error) {
UwMacaroonCaveatType caveat_type{};
if (!uw_macaroon_caveat_get_type_(&caveat, &caveat_type)) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, kInvalidTokenError,
- "Unable to get type");
+ Error::AddTo(error, FROM_HERE, kInvalidTokenError, "Unable to get type");
return false;
}
if (caveat_type != type) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, kInvalidTokenError,
+ Error::AddTo(error, FROM_HERE, kInvalidTokenError,
"Unexpected caveat type");
return false;
}
@@ -87,8 +86,7 @@ bool ReadCaveat(const UwMacaroonCaveat& caveat,
return false;
if (!uw_macaroon_caveat_get_value_uint_(&caveat, value)) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, kInvalidTokenError,
- "Unable to read caveat");
+ Error::AddTo(error, FROM_HERE, kInvalidTokenError, "Unable to read caveat");
return false;
}
@@ -105,8 +103,7 @@ bool ReadCaveat(const UwMacaroonCaveat& caveat,
const uint8_t* start{nullptr};
size_t size{0};
if (!uw_macaroon_caveat_get_value_str_(&caveat, &start, &size)) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, kInvalidTokenError,
- "Unable to read caveat");
+ Error::AddTo(error, FROM_HERE, kInvalidTokenError, "Unable to read caveat");
return false;
}
@@ -147,8 +144,7 @@ bool LoadMacaroon(const std::vector<uint8_t>& token,
buffer->resize(kMaxMacaroonSize);
if (!uw_macaroon_load_(token.data(), token.size(), buffer->data(),
buffer->size(), macaroon)) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, kInvalidTokenError,
- "Invalid token format");
+ Error::AddTo(error, FROM_HERE, kInvalidTokenError, "Invalid token format");
return false;
}
return true;
@@ -159,7 +155,7 @@ bool VerifyMacaroon(const std::vector<uint8_t>& secret,
ErrorPtr* error) {
CHECK_EQ(kSha256OutputSize, secret.size());
if (!uw_macaroon_verify_(&macaroon, secret.data(), secret.size())) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, "invalid_signature",
+ Error::AddTo(error, FROM_HERE, "invalid_signature",
"Invalid token signature");
return false;
}
@@ -275,22 +271,22 @@ bool AuthManager::ParseAccessToken(const std::vector<uint8_t>& token,
&user_id, error) ||
!ReadCaveat(macaroon.caveats[2], kUwMacaroonCaveatTypeExpiration,
&expiration, error)) {
- Error::AddTo(error, FROM_HERE, errors::kDomain,
- errors::kInvalidAuthorization, "Invalid token");
+ Error::AddTo(error, FROM_HERE, errors::kInvalidAuthorization,
+ "Invalid token");
return false;
}
AuthScope auth_scope{FromMacaroonScope(scope)};
if (auth_scope == AuthScope::kNone) {
- Error::AddTo(error, FROM_HERE, errors::kDomain,
- errors::kInvalidAuthorization, "Invalid token data");
+ Error::AddTo(error, FROM_HERE, errors::kInvalidAuthorization,
+ "Invalid token data");
return false;
}
base::Time time{base::Time::FromTimeT(expiration)};
if (time < clock_->Now()) {
- Error::AddTo(error, FROM_HERE, errors::kDomain,
- errors::kAuthorizationExpired, "Token is expired");
+ Error::AddTo(error, FROM_HERE, errors::kAuthorizationExpired,
+ "Token is expired");
return false;
}
@@ -307,9 +303,9 @@ std::vector<uint8_t> AuthManager::ClaimRootClientAuthToken(
if (config_) {
auto current = config_->GetSettings().root_client_token_owner;
if (!IsClaimAllowed(current, owner)) {
- Error::AddToPrintf(
- error, FROM_HERE, errors::kDomain, errors::kAlreadyClaimed,
- "Device already claimed by '%s'", EnumToString(current).c_str());
+ Error::AddToPrintf(error, FROM_HERE, errors::kAlreadyClaimed,
+ "Device already claimed by '%s'",
+ EnumToString(current).c_str());
return {};
}
};
@@ -333,8 +329,7 @@ bool AuthManager::ConfirmClientAuthToken(const std::vector<uint8_t>& token,
return auth.first->IsValidAuthToken(token, nullptr);
});
if (claim == pending_claims_.end()) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kNotFound,
- "Unknown claim");
+ Error::AddTo(error, FROM_HERE, errors::kNotFound, "Unknown claim");
return false;
}
@@ -363,8 +358,7 @@ bool AuthManager::IsValidAuthToken(const std::vector<uint8_t>& token,
UwMacaroon macaroon{};
if (!LoadMacaroon(token, &buffer, &macaroon, error) ||
!VerifyMacaroon(auth_secret_, macaroon, error)) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kInvalidAuthCode,
- "Invalid token");
+ Error::AddTo(error, FROM_HERE, errors::kInvalidAuthCode, "Invalid token");
return false;
}
return true;
diff --git a/src/privet/cloud_delegate.cc b/src/privet/cloud_delegate.cc
index 4bf47b3..0eb04e0 100644
--- a/src/privet/cloud_delegate.cc
+++ b/src/privet/cloud_delegate.cc
@@ -32,7 +32,7 @@ const int kMaxDeviceRegistrationRetries = 100; // ~ 8 minutes @5s retries.
CommandInstance* ReturnNotFound(const std::string& command_id,
ErrorPtr* error) {
- Error::AddToPrintf(error, FROM_HERE, errors::kDomain, errors::kNotFound,
+ Error::AddToPrintf(error, FROM_HERE, errors::kNotFound,
"Command not found, ID='%s'", command_id.c_str());
return nullptr;
}
@@ -171,9 +171,8 @@ class CloudDelegateImpl : public CloudDelegate {
UserRole role;
std::string str_scope = EnumToString(user_info.scope());
if (!StringToEnum(str_scope, &role)) {
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidParams, "Invalid role: '%s'",
- str_scope.c_str());
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidParams,
+ "Invalid role: '%s'", str_scope.c_str());
return callback.Run({}, std::move(error));
}
@@ -251,9 +250,9 @@ class CloudDelegateImpl : public CloudDelegate {
connection_state_ = ConnectionState{ConnectionState::kOnline};
} else {
ErrorPtr error;
- Error::AddToPrintf(
- &error, FROM_HERE, errors::kDomain, errors::kInvalidState,
- "Unexpected registration status: %s", EnumToString(status).c_str());
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidState,
+ "Unexpected registration status: %s",
+ EnumToString(status).c_str());
connection_state_ = ConnectionState{std::move(error)};
}
NotifyOnDeviceInfoChanged();
@@ -268,7 +267,7 @@ class CloudDelegateImpl : public CloudDelegate {
ErrorPtr error;
CHECK_GE(registation_retry_count_, 0);
if (registation_retry_count_-- == 0) {
- Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kInvalidState,
+ Error::AddTo(&error, FROM_HERE, errors::kInvalidState,
"Failed to register device");
setup_state_ = SetupState{std::move(error)};
return;
@@ -321,7 +320,7 @@ class CloudDelegateImpl : public CloudDelegate {
return true;
}
- Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kAccessDenied,
+ Error::AddTo(error, FROM_HERE, errors::kAccessDenied,
"Need to be owner of the command.");
return false;
}
diff --git a/src/privet/constants.cc b/src/privet/constants.cc
index e1962bd..4278165 100644
--- a/src/privet/constants.cc
+++ b/src/privet/constants.cc
@@ -8,8 +8,6 @@ namespace weave {
namespace privet {
namespace errors {
-const char kDomain[] = "privetd";
-
const char kInvalidClientCommitment[] = "invalidClientCommitment";
const char kInvalidFormat[] = "invalidFormat";
const char kMissingAuthorization[] = "missingAuthorization";
diff --git a/src/privet/constants.h b/src/privet/constants.h
index 2b001aa..67f993d 100644
--- a/src/privet/constants.h
+++ b/src/privet/constants.h
@@ -10,8 +10,6 @@ namespace privet {
namespace errors {
-extern const char kDomain[];
-
extern const char kInvalidClientCommitment[];
extern const char kInvalidFormat[];
extern const char kMissingAuthorization[];
diff --git a/src/privet/privet_handler.cc b/src/privet/privet_handler.cc
index db55861..e8b1c77 100644
--- a/src/privet/privet_handler.cc
+++ b/src/privet/privet_handler.cc
@@ -185,7 +185,7 @@ void ReturnError(const Error& error,
const PrivetHandler::RequestCallback& callback) {
int code = http::kInternalServerError;
for (const auto& it : kReasonToCode) {
- if (error.HasError(errors::kDomain, it.reason)) {
+ if (error.HasError(it.reason)) {
code = it.code;
break;
}
@@ -201,14 +201,12 @@ void OnCommandRequestSucceeded(const PrivetHandler::RequestCallback& callback,
if (!error)
return callback.Run(http::kOk, output);
- if (error->HasError("gcd", "unknown_command")) {
- Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kNotFound,
- "Unknown command ID");
+ if (error->HasError("unknown_command")) {
+ Error::AddTo(&error, FROM_HERE, errors::kNotFound, "Unknown command ID");
return ReturnError(*error, callback);
}
- if (error->HasError("gcd", "access_denied")) {
- Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kAccessDenied,
- error->GetMessage());
+ if (error->HasError("access_denied")) {
+ Error::AddTo(&error, FROM_HERE, errors::kAccessDenied, error->GetMessage());
return ReturnError(*error, callback);
}
return ReturnError(*error, callback);
@@ -471,26 +469,22 @@ void PrivetHandler::HandleRequest(const std::string& api,
const RequestCallback& callback) {
ErrorPtr error;
if (!input) {
- Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kInvalidFormat,
- "Malformed JSON");
+ Error::AddTo(&error, FROM_HERE, errors::kInvalidFormat, "Malformed JSON");
return ReturnError(*error, callback);
}
auto handler = handlers_.find(api);
if (handler == handlers_.end()) {
- Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kNotFound,
- "Path not found");
+ Error::AddTo(&error, FROM_HERE, errors::kNotFound, "Path not found");
return ReturnError(*error, callback);
}
if (auth_header.empty()) {
- Error::AddTo(&error, FROM_HERE, errors::kDomain,
- errors::kMissingAuthorization,
+ Error::AddTo(&error, FROM_HERE, errors::kMissingAuthorization,
"Authorization header must not be empty");
return ReturnError(*error, callback);
}
std::string token = GetAuthTokenFromAuthHeader(auth_header);
if (token.empty()) {
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidAuthorization,
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidAuthorization,
"Invalid authorization header: %s", auth_header.c_str());
return ReturnError(*error, callback);
}
@@ -501,8 +495,7 @@ void PrivetHandler::HandleRequest(const std::string& api,
}
if (handler->second.scope > user_info.scope()) {
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidAuthorizationScope,
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidAuthorizationScope,
"Scope '%s' does not allow '%s'",
EnumToString(user_info.scope()).c_str(), api.c_str());
return ReturnError(*error, callback);
@@ -590,9 +583,9 @@ void PrivetHandler::HandlePairingStart(const base::DictionaryValue& input,
std::set<PairingType> modes = security_->GetPairingTypes();
if (!StringToEnum(pairing_str, &pairing) ||
modes.find(pairing) == modes.end()) {
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidParams, kInvalidParamValueFormat,
- kPairingKey, pairing_str.c_str());
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidParams,
+ kInvalidParamValueFormat, kPairingKey,
+ pairing_str.c_str());
return ReturnError(*error, callback);
}
@@ -600,9 +593,9 @@ void PrivetHandler::HandlePairingStart(const base::DictionaryValue& input,
std::set<CryptoType> cryptos = security_->GetCryptoTypes();
if (!StringToEnum(crypto_str, &crypto) ||
cryptos.find(crypto) == cryptos.end()) {
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidParams, kInvalidParamValueFormat,
- kCryptoKey, crypto_str.c_str());
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidParams,
+ kInvalidParamValueFormat, kCryptoKey,
+ crypto_str.c_str());
return ReturnError(*error, callback);
}
@@ -663,9 +656,9 @@ void PrivetHandler::HandleAuth(const base::DictionaryValue& input,
AuthType auth_type{};
if (!input.GetString(kAuthModeKey, &auth_code_type) ||
!StringToEnum(auth_code_type, &auth_type)) {
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidAuthMode, kInvalidParamValueFormat,
- kAuthModeKey, auth_code_type.c_str());
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidAuthMode,
+ kInvalidParamValueFormat, kAuthModeKey,
+ auth_code_type.c_str());
return ReturnError(*error, callback);
}
@@ -676,8 +669,7 @@ void PrivetHandler::HandleAuth(const base::DictionaryValue& input,
input.GetString(kAuthRequestedScopeKey, &requested_scope);
if (requested_scope != kAuthScopeAutoValue) {
if (!StringToEnum(requested_scope, &desired_scope)) {
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidRequestedScope,
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidRequestedScope,
kInvalidParamValueFormat, kAuthRequestedScopeKey,
requested_scope.c_str());
return ReturnError(*error, callback);
@@ -701,8 +693,8 @@ void PrivetHandler::HandleAuth(const base::DictionaryValue& input,
}
if (access_token_scope < acceptable_scope) {
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kAccessDenied, "Scope '%s' is not allowed",
+ Error::AddToPrintf(&error, FROM_HERE, errors::kAccessDenied,
+ "Scope '%s' is not allowed",
EnumToString(access_token_scope).c_str());
return ReturnError(*error, callback);
}
@@ -737,9 +729,9 @@ void PrivetHandler::HandleAccessControlConfirm(
std::string token;
if (!input.GetString(kAuthClientTokenKey, &token)) {
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidParams, kInvalidParamValueFormat,
- kAuthClientTokenKey, token.c_str());
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidParams,
+ kInvalidParamValueFormat, kAuthClientTokenKey,
+ token.c_str());
return ReturnError(*error, callback);
}
@@ -771,16 +763,15 @@ void PrivetHandler::HandleSetupStart(const base::DictionaryValue& input,
if (input.GetDictionary(kWifiKey, &wifi)) {
if (!wifi_ || wifi_->GetTypes().empty()) {
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, errors::kDomain,
- errors::kSetupUnavailable, "WiFi setup unavailable");
+ Error::AddTo(&error, FROM_HERE, errors::kSetupUnavailable,
+ "WiFi setup unavailable");
return ReturnError(*error, callback);
}
wifi->GetString(kSetupStartSsidKey, &ssid);
if (ssid.empty()) {
ErrorPtr error;
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidParams, kInvalidParamValueFormat,
- kSetupStartSsidKey, "");
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidParams,
+ kInvalidParamValueFormat, kSetupStartSsidKey, "");
return ReturnError(*error, callback);
}
wifi->GetString(kSetupStartPassKey, &passphrase);
@@ -790,17 +781,15 @@ void PrivetHandler::HandleSetupStart(const base::DictionaryValue& input,
if (input.GetDictionary(kGcdKey, &registration)) {
if (user_info.scope() < AuthScope::kOwner) {
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidAuthorizationScope,
+ Error::AddTo(&error, FROM_HERE, errors::kInvalidAuthorizationScope,
"Only owner can register device");
return ReturnError(*error, callback);
}
registration->GetString(kSetupStartTicketIdKey, &ticket);
if (ticket.empty()) {
ErrorPtr error;
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidParams, kInvalidParamValueFormat,
- kSetupStartTicketIdKey, "");
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidParams,
+ kInvalidParamValueFormat, kSetupStartTicketIdKey, "");
return ReturnError(*error, callback);
}
registration->GetString(kSetupStartUserKey, &user);
@@ -932,9 +921,8 @@ void PrivetHandler::HandleCommandsStatus(const base::DictionaryValue& input,
std::string id;
if (!input.GetString(kCommandsIdKey, &id)) {
ErrorPtr error;
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidParams, kInvalidParamValueFormat,
- kCommandsIdKey, id.c_str());
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidParams,
+ kInvalidParamValueFormat, kCommandsIdKey, id.c_str());
return ReturnError(*error, callback);
}
cloud_->GetCommand(id, user_info,
@@ -954,9 +942,8 @@ void PrivetHandler::HandleCommandsCancel(const base::DictionaryValue& input,
std::string id;
if (!input.GetString(kCommandsIdKey, &id)) {
ErrorPtr error;
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
- errors::kInvalidParams, kInvalidParamValueFormat,
- kCommandsIdKey, id.c_str());
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidParams,
+ kInvalidParamValueFormat, kCommandsIdKey, id.c_str());
return ReturnError(*error, callback);
}
cloud_->CancelCommand(id, user_info,
diff --git a/src/privet/privet_handler_unittest.cc b/src/privet/privet_handler_unittest.cc
index 6d6a289..a353a0f 100644
--- a/src/privet/privet_handler_unittest.cc
+++ b/src/privet/privet_handler_unittest.cc
@@ -136,7 +136,7 @@ class PrivetHandlerTest : public testing::Test {
.WillRepeatedly(ReturnRef(gcd_disabled_state_));
auto set_error = [](const std::string&, const std::string&,
ErrorPtr* error) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, "setupUnavailable", "");
+ Error::AddTo(error, FROM_HERE, "setupUnavailable", "");
};
EXPECT_CALL(cloud_, Setup(_, _, _))
.WillRepeatedly(DoAll(Invoke(set_error), Return(false)));
@@ -198,7 +198,7 @@ TEST_F(PrivetHandlerTest, ExpiredAuth) {
auth_header_ = "Privet 123";
EXPECT_CALL(security_, ParseAccessToken(_, _, _))
.WillRepeatedly(DoAll(WithArgs<2>(Invoke([](ErrorPtr* error) {
- Error::AddTo(error, FROM_HERE, errors::kDomain,
+ Error::AddTo(error, FROM_HERE,
"authorizationExpired", "");
})),
Return(false)));
@@ -379,7 +379,7 @@ TEST_F(PrivetHandlerTest, AuthErrorAccessDenied) {
TEST_F(PrivetHandlerTest, AuthErrorInvalidAuthCode) {
auto set_error = [](ErrorPtr* error) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, "invalidAuthCode", "");
+ Error::AddTo(error, FROM_HERE, "invalidAuthCode", "");
};
EXPECT_CALL(security_, CreateAccessToken(_, "testToken", _, _, _, _, _))
.WillRepeatedly(DoAll(WithArgs<6>(Invoke(set_error)), Return(false)));
@@ -511,7 +511,7 @@ TEST_F(PrivetHandlerSetupTest, StatusWifi) {
TEST_F(PrivetHandlerSetupTest, StatusWifiError) {
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, "test", "invalidPassphrase", "");
+ Error::AddTo(&error, FROM_HERE, "invalidPassphrase", "");
wifi_.setup_state_ = SetupState{std::move(error)};
const char kExpected[] = R"({
@@ -541,7 +541,7 @@ TEST_F(PrivetHandlerSetupTest, StatusGcd) {
TEST_F(PrivetHandlerSetupTest, StatusGcdError) {
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, "test", "invalidTicket", "");
+ Error::AddTo(&error, FROM_HERE, "invalidTicket", "");
cloud_.setup_state_ = SetupState{std::move(error)};
const char kExpected[] = R"({
@@ -601,7 +601,7 @@ TEST_F(PrivetHandlerSetupTest, WifiSetup) {
}
})";
auto set_error = [](const std::string&, const std::string&, ErrorPtr* error) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, "deviceBusy", "");
+ Error::AddTo(error, FROM_HERE, "deviceBusy", "");
};
EXPECT_CALL(wifi_, ConfigureCredentials(_, _, _))
.WillOnce(DoAll(Invoke(set_error), Return(false)));
@@ -641,7 +641,7 @@ TEST_F(PrivetHandlerSetupTest, GcdSetup) {
})";
auto set_error = [](const std::string&, const std::string&, ErrorPtr* error) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, "deviceBusy", "");
+ Error::AddTo(error, FROM_HERE, "deviceBusy", "");
};
EXPECT_CALL(cloud_, Setup(_, _, _))
.WillOnce(DoAll(Invoke(set_error), Return(false)));
@@ -857,7 +857,7 @@ TEST_F(PrivetHandlerTestWithAuth, ComponentsWithFiltersAndPaths) {
"{'path':'comp1.comp2', 'filter':['traits', 'components']}"));
auto error_handler = [](ErrorPtr* error) -> const base::DictionaryValue* {
- Error::AddTo(error, FROM_HERE, errors::kDomain, "componentNotFound", "");
+ Error::AddTo(error, FROM_HERE, "componentNotFound", "");
return nullptr;
};
EXPECT_CALL(cloud_, FindComponent("comp7", _))
@@ -899,7 +899,7 @@ TEST_F(PrivetHandlerTestWithAuth, CommandsStatus) {
HandleRequest("/privet/v3/commands/status", kInput));
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, errors::kDomain, "notFound", "");
+ Error::AddTo(&error, FROM_HERE, "notFound", "");
EXPECT_CALL(cloud_, GetCommand(_, _, _))
.WillOnce(WithArgs<2>(
Invoke([&error](const CloudDelegate::CommandDoneCallback& callback) {
@@ -924,7 +924,7 @@ TEST_F(PrivetHandlerTestWithAuth, CommandsCancel) {
HandleRequest("/privet/v3/commands/cancel", "{'id': '8'}"));
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, errors::kDomain, "notFound", "");
+ Error::AddTo(&error, FROM_HERE, "notFound", "");
EXPECT_CALL(cloud_, CancelCommand(_, _, _))
.WillOnce(WithArgs<2>(
Invoke([&error](const CloudDelegate::CommandDoneCallback& callback) {
diff --git a/src/privet/security_manager.cc b/src/privet/security_manager.cc
index 2a3dc08..7a3533a 100644
--- a/src/privet/security_manager.cc
+++ b/src/privet/security_manager.cc
@@ -51,8 +51,8 @@ class Spakep224Exchanger : public SecurityManager::KeyExchanger {
case crypto::P224EncryptedKeyExchange::kResultPending:
return true;
case crypto::P224EncryptedKeyExchange::kResultFailed:
- Error::AddTo(error, FROM_HERE, errors::kDomain,
- errors::kInvalidClientCommitment, spake_.error());
+ Error::AddTo(error, FROM_HERE, errors::kInvalidClientCommitment,
+ spake_.error());
return false;
default:
LOG(FATAL) << "SecurityManager uses only one round trip";
@@ -139,7 +139,7 @@ bool SecurityManager::CreateAccessTokenImpl(
base::TimeDelta* access_token_ttl,
ErrorPtr* error) {
auto disabled_mode = [](ErrorPtr* error) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kInvalidAuthMode,
+ Error::AddTo(error, FROM_HERE, errors::kInvalidAuthMode,
"Mode is not available");
return false;
};
@@ -154,8 +154,8 @@ bool SecurityManager::CreateAccessTokenImpl(
if (!IsPairingAuthSupported())
return disabled_mode(error);
if (!IsValidPairingCode(auth_code)) {
- Error::AddTo(error, FROM_HERE, errors::kDomain,
- errors::kInvalidAuthCode, "Invalid authCode");
+ Error::AddTo(error, FROM_HERE, errors::kInvalidAuthCode,
+ "Invalid authCode");
return false;
}
return CreateAccessTokenImpl(auth_type, desired_scope, access_token,
@@ -170,7 +170,7 @@ bool SecurityManager::CreateAccessTokenImpl(
error);
}
- Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kInvalidAuthMode,
+ Error::AddTo(error, FROM_HERE, errors::kInvalidAuthMode,
"Unsupported auth mode");
return false;
}
@@ -185,8 +185,7 @@ bool SecurityManager::CreateAccessToken(AuthType auth_type,
std::vector<uint8_t> auth_decoded;
if (auth_type != AuthType::kAnonymous &&
!Base64Decode(auth_code, &auth_decoded)) {
- Error::AddToPrintf(error, FROM_HERE, errors::kDomain,
- errors::kInvalidAuthorization,
+ Error::AddToPrintf(error, FROM_HERE, errors::kInvalidAuthorization,
"Invalid auth_code encoding: %s", auth_code.c_str());
return false;
}
@@ -209,8 +208,7 @@ bool SecurityManager::ParseAccessToken(const std::string& token,
ErrorPtr* error) const {
std::vector<uint8_t> decoded;
if (!Base64Decode(token, &decoded)) {
- Error::AddToPrintf(error, FROM_HERE, errors::kDomain,
- errors::kInvalidAuthorization,
+ Error::AddToPrintf(error, FROM_HERE, errors::kInvalidAuthorization,
"Invalid token encoding: %s", token.c_str());
return false;
}
@@ -252,8 +250,7 @@ bool SecurityManager::ConfirmClientAuthToken(const std::string& token,
ErrorPtr* error) {
std::vector<uint8_t> token_decoded;
if (!Base64Decode(token, &token_decoded)) {
- Error::AddToPrintf(error, FROM_HERE, errors::kDomain,
- errors::kInvalidFormat,
+ Error::AddToPrintf(error, FROM_HERE, errors::kInvalidFormat,
"Invalid auth token string: '%s'", token.c_str());
return false;
}
@@ -293,7 +290,7 @@ bool SecurityManager::StartPairing(PairingType mode,
const auto& pairing_modes = GetSettings().pairing_modes;
if (std::find(pairing_modes.begin(), pairing_modes.end(), mode) ==
pairing_modes.end()) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kInvalidParams,
+ Error::AddTo(error, FROM_HERE, errors::kInvalidParams,
"Pairing mode is not enabled");
return false;
}
@@ -308,7 +305,7 @@ bool SecurityManager::StartPairing(PairingType mode,
code = base::StringPrintf("%04i", base::RandInt(0, 9999));
break;
default:
- Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kInvalidParams,
+ Error::AddTo(error, FROM_HERE, errors::kInvalidParams,
"Unsupported pairing mode");
return false;
}
@@ -325,7 +322,7 @@ bool SecurityManager::StartPairing(PairingType mode,
}
// Fall through...
default:
- Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kInvalidParams,
+ Error::AddTo(error, FROM_HERE, errors::kInvalidParams,
"Unsupported crypto");
return false;
}
@@ -368,25 +365,24 @@ bool SecurityManager::ConfirmPairing(const std::string& session_id,
ErrorPtr* error) {
auto session = pending_sessions_.find(session_id);
if (session == pending_sessions_.end()) {
- Error::AddToPrintf(error, FROM_HERE, errors::kDomain,
- errors::kUnknownSession, "Unknown session id: '%s'",
- session_id.c_str());
+ Error::AddToPrintf(error, FROM_HERE, errors::kUnknownSession,
+ "Unknown session id: '%s'", session_id.c_str());
return false;
}
std::vector<uint8_t> commitment;
if (!Base64Decode(client_commitment, &commitment)) {
ClosePendingSession(session_id);
- Error::AddToPrintf(
- error, FROM_HERE, errors::kDomain, errors::kInvalidFormat,
- "Invalid commitment string: '%s'", client_commitment.c_str());
+ Error::AddToPrintf(error, FROM_HERE, errors::kInvalidFormat,
+ "Invalid commitment string: '%s'",
+ client_commitment.c_str());
return false;
}
if (!session->second->ProcessMessage(
std::string(commitment.begin(), commitment.end()), error)) {
ClosePendingSession(session_id);
- Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kCommitmentMismatch,
+ Error::AddTo(error, FROM_HERE, errors::kCommitmentMismatch,
"Pairing code or crypto implementation mismatch");
return false;
}
@@ -422,7 +418,7 @@ bool SecurityManager::CancelPairing(const std::string& session_id,
CHECK(!confirmed || !pending);
if (confirmed || pending)
return true;
- Error::AddToPrintf(error, FROM_HERE, errors::kDomain, errors::kUnknownSession,
+ Error::AddToPrintf(error, FROM_HERE, errors::kUnknownSession,
"Unknown session id: '%s'", session_id.c_str());
return false;
}
@@ -444,7 +440,7 @@ bool SecurityManager::CheckIfPairingAllowed(ErrorPtr* error) {
return true;
if (block_pairing_until_ > auth_manager_->Now()) {
- Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kDeviceBusy,
+ Error::AddTo(error, FROM_HERE, errors::kDeviceBusy,
"Too many pairing attempts");
return false;
}
diff --git a/src/privet/wifi_bootstrap_manager.cc b/src/privet/wifi_bootstrap_manager.cc
index 086e21c..566da80 100644
--- a/src/privet/wifi_bootstrap_manager.cc
+++ b/src/privet/wifi_bootstrap_manager.cc
@@ -211,7 +211,7 @@ std::set<WifiType> WifiBootstrapManager::GetTypes() const {
void WifiBootstrapManager::OnConnectDone(const std::string& ssid,
ErrorPtr error) {
if (error) {
- Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kInvalidState,
+ Error::AddTo(&error, FROM_HERE, errors::kInvalidState,
"Failed to connect to provided network");
setup_state_ = SetupState{std::move(error)};
return StartBootstrapping();
@@ -226,7 +226,7 @@ void WifiBootstrapManager::OnConnectDone(const std::string& ssid,
void WifiBootstrapManager::OnConnectTimeout() {
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kInvalidState,
+ Error::AddTo(&error, FROM_HERE, errors::kInvalidState,
"Timeout connecting to provided network");
setup_state_ = SetupState{std::move(error)};
return StartBootstrapping();
@@ -265,7 +265,7 @@ void WifiBootstrapManager::UpdateConnectionState() {
case Network::State::kError: {
// TODO(wiley) Pull error information from somewhere.
ErrorPtr error;
- Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kInvalidState,
+ Error::AddTo(&error, FROM_HERE, errors::kInvalidState,
"Unknown WiFi error");
connection_state_ = ConnectionState{std::move(error)};
return;
@@ -278,7 +278,7 @@ void WifiBootstrapManager::UpdateConnectionState() {
return;
}
ErrorPtr error;
- Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, errors::kInvalidState,
+ Error::AddToPrintf(&error, FROM_HERE, errors::kInvalidState,
"Unknown network state: %s",
EnumToString(service_state).c_str());
connection_state_ = ConnectionState{std::move(error)};
diff --git a/src/utils.cc b/src/utils.cc
index 24ce1ca..28828d7 100644
--- a/src/utils.cc
+++ b/src/utils.cc
@@ -29,7 +29,6 @@ const char kErrorMessageKey[] = "message";
} // anonymous namespace
namespace errors {
-const char kErrorDomain[] = "weave";
const char kSchemaError[] = "schema_error";
const char kInvalidCategoryError[] = "invalid_category";
const char kInvalidPackageError[] = "invalid_package";
@@ -43,8 +42,7 @@ std::unique_ptr<base::DictionaryValue> LoadJsonDict(
auto value = base::JSONReader::ReadAndReturnError(
json_string, base::JSON_PARSE_RFC, nullptr, &error_message);
if (!value) {
- Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain,
- errors::json::kParseError,
+ Error::AddToPrintf(error, FROM_HERE, errors::json::kParseError,
"Error parsing JSON string '%s' (%zu): %s",
LimitString(json_string, kMaxStrLen).c_str(),
json_string.size(), error_message.c_str());
@@ -52,8 +50,7 @@ std::unique_ptr<base::DictionaryValue> LoadJsonDict(
}
base::DictionaryValue* dict_value = nullptr;
if (!value->GetAsDictionary(&dict_value)) {
- Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain,
- errors::json::kObjectExpected,
+ Error::AddToPrintf(error, FROM_HERE, errors::json::kObjectExpected,
"JSON string '%s' is not a JSON object",
LimitString(json_string, kMaxStrLen).c_str());
return result;
diff --git a/src/utils.h b/src/utils.h
index bd69e94..99d7bda 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -14,7 +14,6 @@
namespace weave {
namespace errors {
-extern const char kErrorDomain[];
extern const char kSchemaError[];
extern const char kInvalidCategoryError[];
extern const char kInvalidPackageError[];
diff --git a/src/weave_unittest.cc b/src/weave_unittest.cc
index b106aab..5bef931 100644
--- a/src/weave_unittest.cc
+++ b/src/weave_unittest.cc
@@ -435,13 +435,12 @@ TEST_F(WeaveBasicTest, Register) {
EXPECT_TRUE(done);
done = false;
- device_->Register(
- "TICKET_ID2", base::Bind([this, &done](ErrorPtr error) {
- EXPECT_TRUE(error->HasError("weave", "already_registered"));
- done = true;
- task_runner_.Break();
- EXPECT_EQ("CLOUD_ID", device_->GetSettings().cloud_id);
- }));
+ device_->Register("TICKET_ID2", base::Bind([this, &done](ErrorPtr error) {
+ EXPECT_TRUE(error->HasError("already_registered"));
+ done = true;
+ task_runner_.Break();
+ EXPECT_EQ("CLOUD_ID", device_->GetSettings().cloud_id);
+ }));
task_runner_.Run();
EXPECT_TRUE(done);
}