libweave: Copy chromeos::Error into libweave To move dependency on libchromeos. BUG=brillo:1257 TEST=`FEATURES=test emerge-gizmo libweave buffet` CQ-DEPEND=CL:293873 Change-Id: Icc3df36b34431987802fe752ae4a129438c57a9d Reviewed-on: https://chromium-review.googlesource.com/293615 Reviewed-by: Vitaly Buka <vitalybuka@chromium.org> Tested-by: Vitaly Buka <vitalybuka@chromium.org> Reviewed-by: Alex Vakulenko <avakulenko@chromium.org> Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/libweave/include/weave/cloud.h b/libweave/include/weave/cloud.h index daa39f1..ade4247 100644 --- a/libweave/include/weave/cloud.h +++ b/libweave/include/weave/cloud.h
@@ -9,7 +9,7 @@ #include <base/callback.h> #include <base/values.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> namespace weave { @@ -27,8 +27,7 @@ base::Callback<void(RegistrationStatus satus)>; using OnCloudRequestCallback = base::Callback<void(const base::DictionaryValue& response)>; - using OnCloudRequestErrorCallback = - base::Callback<void(const chromeos::Error* error)>; + using OnCloudRequestErrorCallback = base::Callback<void(const Error* error)>; // Sets callback which is called when registration state is changed. virtual void AddOnRegistrationChangedCallback( @@ -44,19 +43,19 @@ // Registers the device. // Returns a device ID on success. virtual std::string RegisterDevice(const std::string& ticket_id, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; // Updates basic device information. virtual bool UpdateDeviceInfo(const std::string& name, const std::string& description, const std::string& location, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; // Updates base device config. virtual bool UpdateBaseConfig(const std::string& anonymous_access_role, bool local_discovery_enabled, bool local_pairing_enabled, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; // Updates GCD service configuration. Usually for testing. virtual bool UpdateServiceConfig(const std::string& client_id, @@ -64,7 +63,7 @@ const std::string& api_key, const std::string& oauth_url, const std::string& service_url, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; protected: virtual ~Cloud() = default;
diff --git a/libweave/include/weave/command.h b/libweave/include/weave/command.h index 0533afa..e3d35a7 100644 --- a/libweave/include/weave/command.h +++ b/libweave/include/weave/command.h
@@ -8,7 +8,7 @@ #include <string> #include <base/values.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> namespace weave { @@ -73,12 +73,12 @@ // Updates the command progress. The |progress| should match the schema. // Returns false if |progress| value is incorrect. virtual bool SetProgress(const base::DictionaryValue& progress, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; // Updates the command results. The |results| should match the schema. // Returns false if |results| value is incorrect. virtual bool SetResults(const base::DictionaryValue& results, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; // Aborts command execution. virtual void Abort() = 0;
diff --git a/libweave/include/weave/commands.h b/libweave/include/weave/commands.h index 37ca095..68751ac 100644 --- a/libweave/include/weave/commands.h +++ b/libweave/include/weave/commands.h
@@ -9,7 +9,7 @@ #include <base/callback.h> #include <base/values.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include <weave/command.h> namespace weave { @@ -36,7 +36,7 @@ virtual bool AddCommand(const base::DictionaryValue& command, UserRole role, std::string* id, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; // Finds a command by the command |id|. Returns nullptr if the command with // the given |id| is not found. The returned pointer should not be persisted
diff --git a/libweave/include/weave/error.h b/libweave/include/weave/error.h new file mode 100644 index 0000000..278d2f9 --- /dev/null +++ b/libweave/include/weave/error.h
@@ -0,0 +1,130 @@ +// Copyright 2014 The Chromium OS Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef LIBWEAVE_INCLUDE_WEAVE_ERROR_H_ +#define LIBWEAVE_INCLUDE_WEAVE_ERROR_H_ + +#include <memory> +#include <string> + +#include <base/macros.h> +#include <base/tracked_objects.h> +#include <weave/export.h> + +namespace weave { + +class Error; // Forward declaration. + +using ErrorPtr = std::unique_ptr<Error>; + +class Error final { + public: + ~Error() = default; + + // 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); + // If |error| is not nullptr, creates another instance of Error class, + // initializes it with specified arguments and adds it to the head of + // the error chain pointed to by |error|. + LIBWEAVE_EXPORT 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. + LIBWEAVE_EXPORT 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); + + // Clones error with all inner errors. + ErrorPtr Clone() const; + + // Returns the error domain, code and message + const std::string& GetDomain() const { return domain_; } + const std::string& GetCode() const { return code_; } + const std::string& GetMessage() const { return message_; } + + // Returns the location of the error in the source code. + const tracked_objects::LocationSnapshot& GetLocation() const { + 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; + + // Gets a pointer to the inner error, if present. Returns nullptr otherwise. + const Error* GetInnerError() const { return inner_error_.get(); } + + // Gets a pointer to the first error occurred. + // 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. + // 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. + std::string code_; + // Human-readable error message. + std::string message_; + // Error origin in the source code. + tracked_objects::LocationSnapshot location_; + // Pointer to inner error, if any. This forms a chain of errors. + ErrorPtr inner_error_; + + private: + DISALLOW_COPY_AND_ASSIGN(Error); +}; + +} // namespace weave + +#endif // LIBWEAVE_INCLUDE_WEAVE_ERROR_H_
diff --git a/libweave/include/weave/http_client.h b/libweave/include/weave/http_client.h index 401f1c5..6112271 100644 --- a/libweave/include/weave/http_client.h +++ b/libweave/include/weave/http_client.h
@@ -10,7 +10,7 @@ #include <vector> #include <base/callback.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> namespace weave { @@ -28,7 +28,7 @@ using Headers = std::vector<std::pair<std::string, std::string>>; using SuccessCallback = base::Callback<void(int, const Response&)>; - using ErrorCallback = base::Callback<void(int, const chromeos::Error*)>; + using ErrorCallback = base::Callback<void(int, const Error*)>; // TODO(vitalybuka): Remove blocking version. virtual std::unique_ptr<Response> SendRequestAndBlock( @@ -36,7 +36,7 @@ const std::string& url, const Headers& headers, const std::string& data, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; virtual int SendRequest(const std::string& method, const std::string& url,
diff --git a/libweave/include/weave/mock_command.h b/libweave/include/weave/mock_command.h index 1444cd4..7d0c938 100644 --- a/libweave/include/weave/mock_command.h +++ b/libweave/include/weave/mock_command.h
@@ -30,10 +30,8 @@ MOCK_CONST_METHOD0(MockGetParameters, const std::string&()); MOCK_CONST_METHOD0(MockGetProgress, const std::string&()); MOCK_CONST_METHOD0(MockGetResults, const std::string&()); - MOCK_METHOD2(SetProgress, - bool(const base::DictionaryValue&, chromeos::ErrorPtr*)); - MOCK_METHOD2(SetResults, - bool(const base::DictionaryValue&, chromeos::ErrorPtr*)); + MOCK_METHOD2(SetProgress, bool(const base::DictionaryValue&, ErrorPtr*)); + MOCK_METHOD2(SetResults, bool(const base::DictionaryValue&, ErrorPtr*)); MOCK_METHOD0(Abort, void()); MOCK_METHOD0(Cancel, void()); MOCK_METHOD0(Done, void());
diff --git a/libweave/include/weave/mock_commands.h b/libweave/include/weave/mock_commands.h index 21ae120..7e13cd5 100644 --- a/libweave/include/weave/mock_commands.h +++ b/libweave/include/weave/mock_commands.h
@@ -20,11 +20,9 @@ MOCK_METHOD1(AddOnCommandAddedCallback, void(const OnCommandCallback&)); MOCK_METHOD1(AddOnCommandRemovedCallback, void(const OnCommandCallback&)); - MOCK_METHOD4(AddCommand, - bool(const base::DictionaryValue&, - UserRole, - std::string*, - chromeos::ErrorPtr*)); + MOCK_METHOD4( + AddCommand, + bool(const base::DictionaryValue&, UserRole, std::string*, ErrorPtr*)); MOCK_METHOD1(FindCommand, Command*(const std::string&)); };
diff --git a/libweave/include/weave/mock_http_client.h b/libweave/include/weave/mock_http_client.h index cb1b96e..7ea1f26 100644 --- a/libweave/include/weave/mock_http_client.h +++ b/libweave/include/weave/mock_http_client.h
@@ -31,14 +31,13 @@ const std::string&, const Headers&, const std::string&, - chromeos::ErrorPtr*)); + ErrorPtr*)); - std::unique_ptr<Response> SendRequestAndBlock( - const std::string& method, - const std::string& url, - const Headers& headers, - const std::string& data, - chromeos::ErrorPtr* error) override; + std::unique_ptr<Response> SendRequestAndBlock(const std::string& method, + const std::string& url, + const Headers& headers, + const std::string& data, + ErrorPtr* error) override; int SendRequest(const std::string& method, const std::string& url,
diff --git a/libweave/include/weave/network.h b/libweave/include/weave/network.h index d9c56b9..41e5413 100644 --- a/libweave/include/weave/network.h +++ b/libweave/include/weave/network.h
@@ -9,7 +9,7 @@ #include <string> #include <base/callback.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include <weave/stream.h> namespace weave { @@ -37,7 +37,7 @@ virtual bool ConnectToService(const std::string& ssid, const std::string& passphrase, const base::Closure& on_success, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; virtual NetworkState GetConnectionState() const = 0; @@ -57,7 +57,7 @@ std::unique_ptr<Stream> socket, const std::string& host, const base::Callback<void(std::unique_ptr<Stream>)>& success_callback, - const base::Callback<void(const chromeos::Error*)>& error_callback) = 0; + const base::Callback<void(const Error*)>& error_callback) = 0; protected: virtual ~Network() = default;
diff --git a/libweave/include/weave/state.h b/libweave/include/weave/state.h index c817a75..f1f57e6 100644 --- a/libweave/include/weave/state.h +++ b/libweave/include/weave/state.h
@@ -17,7 +17,7 @@ // Updates a multiple property values. virtual bool SetProperties(const base::DictionaryValue& property_set, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; // Returns aggregated state properties across all registered packages as // a JSON object that can be used to send the device state to the GCD server.
diff --git a/libweave/include/weave/stream.h b/libweave/include/weave/stream.h index 9717d78..3ecdba6 100644 --- a/libweave/include/weave/stream.h +++ b/libweave/include/weave/stream.h
@@ -8,7 +8,7 @@ #include <string> #include <base/callback.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> namespace weave { @@ -20,19 +20,19 @@ void* buffer, size_t size_to_read, const base::Callback<void(size_t)>& success_callback, - const base::Callback<void(const chromeos::Error*)>& error_callback, - chromeos::ErrorPtr* error) = 0; + const base::Callback<void(const Error*)>& error_callback, + ErrorPtr* error) = 0; virtual bool WriteAllAsync( const void* buffer, size_t size_to_write, const base::Closure& success_callback, - const base::Callback<void(const chromeos::Error*)>& error_callback, - chromeos::ErrorPtr* error) = 0; + const base::Callback<void(const Error*)>& error_callback, + ErrorPtr* error) = 0; - virtual bool FlushBlocking(chromeos::ErrorPtr* error) = 0; + virtual bool FlushBlocking(ErrorPtr* error) = 0; - virtual bool CloseBlocking(chromeos::ErrorPtr* error) = 0; + virtual bool CloseBlocking(ErrorPtr* error) = 0; virtual void CancelPendingAsyncOperations() = 0; };
diff --git a/libweave/include/weave/task_runner.h b/libweave/include/weave/task_runner.h index 2c3057c..0b349b6 100644 --- a/libweave/include/weave/task_runner.h +++ b/libweave/include/weave/task_runner.h
@@ -10,7 +10,6 @@ #include <vector> #include <base/callback.h> -#include <chromeos/errors/error.h> namespace weave {
diff --git a/libweave/libweave.gyp b/libweave/libweave.gyp index 3ff064b..649d9f4 100644 --- a/libweave/libweave.gyp +++ b/libweave/libweave.gyp
@@ -30,6 +30,8 @@ { 'target_name': 'libweave_common', 'type': 'static_library', + 'cflags!': ['-fPIE'], + 'cflags': ['-fPIC'], 'sources': [ 'src/backoff_entry.cc', 'src/base_api_handler.cc', @@ -50,6 +52,7 @@ 'src/data_encoding.cc', 'src/device_manager.cc', 'src/device_registration_info.cc', + 'src/error.cc', 'src/http_constants.cc', 'src/json_error_codes.cc', 'src/notification/notification_parser.cc', @@ -140,6 +143,7 @@ 'src/commands/schema_utils_unittest.cc', 'src/data_encoding_unittest.cc', 'src/device_registration_info_unittest.cc', + 'src/error_unittest.cc', 'src/notification/notification_parser_unittest.cc', 'src/notification/xml_node_unittest.cc', 'src/notification/xmpp_channel_unittest.cc',
diff --git a/libweave/src/buffet_config.h b/libweave/src/buffet_config.h index 004e8b2..2d161e1 100644 --- a/libweave/src/buffet_config.h +++ b/libweave/src/buffet_config.h
@@ -11,7 +11,7 @@ #include <base/callback.h> #include <base/files/file_path.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include <chromeos/key_value_store.h> #include <weave/config.h>
diff --git a/libweave/src/commands/command_definition.cc b/libweave/src/commands/command_definition.cc index 66a487c..f00efdd 100644 --- a/libweave/src/commands/command_definition.cc +++ b/libweave/src/commands/command_definition.cc
@@ -6,7 +6,7 @@ #include <vector> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include "libweave/src/commands/schema_constants.h" #include "libweave/src/string_utils.h" @@ -14,7 +14,7 @@ namespace weave { bool CommandDefinition::Visibility::FromString(const std::string& str, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { // This special case is useful for places where we want to make a command // to ALL clients, even if new clients are added in the future. if (str == commands::attributes::kCommand_Visibility_All) { @@ -35,10 +35,10 @@ } else if (value == commands::attributes::kCommand_Visibility_Cloud) { cloud = true; } else { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidPropValue, - "Invalid command visibility value '%s'", - value.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidPropValue, + "Invalid command visibility value '%s'", + value.c_str()); return false; } }
diff --git a/libweave/src/commands/command_definition.h b/libweave/src/commands/command_definition.h index 0ef8fec..512f08d 100644 --- a/libweave/src/commands/command_definition.h +++ b/libweave/src/commands/command_definition.h
@@ -31,7 +31,7 @@ // Visibility bitset (|str| is a string like "local,cloud"). // Special string value "all" is treated as a list of every possible // visibility values and "none" to have all the bits cleared. - bool FromString(const std::string& str, chromeos::ErrorPtr* error); + bool FromString(const std::string& str, ErrorPtr* error); // Converts the visibility bitset to a string. std::string ToString() const;
diff --git a/libweave/src/commands/command_definition_unittest.cc b/libweave/src/commands/command_definition_unittest.cc index 158d43d..458a84e 100644 --- a/libweave/src/commands/command_definition_unittest.cc +++ b/libweave/src/commands/command_definition_unittest.cc
@@ -59,7 +59,7 @@ EXPECT_FALSE(visibility.local); EXPECT_FALSE(visibility.cloud); - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE(visibility.FromString("cloud,all", &error)); EXPECT_EQ("invalid_parameter_value", error->GetCode()); }
diff --git a/libweave/src/commands/command_dictionary.cc b/libweave/src/commands/command_dictionary.cc index 2f36850..c1238dc 100644 --- a/libweave/src/commands/command_dictionary.cc +++ b/libweave/src/commands/command_dictionary.cc
@@ -26,7 +26,7 @@ bool CommandDictionary::LoadCommands(const base::DictionaryValue& json, const std::string& category, const CommandDictionary* base_commands, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { CommandMap new_defs; // |json| contains a list of nested objects with the following structure: @@ -37,10 +37,10 @@ std::string package_name = package_iter.key(); const base::DictionaryValue* package_value = nullptr; if (!package_iter.value().GetAsDictionary(&package_value)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kTypeMismatch, - "Expecting an object for package '%s'", - package_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kTypeMismatch, + "Expecting an object for package '%s'", + package_name.c_str()); return false; } // Iterate over command definitions within the current package. @@ -48,19 +48,18 @@ while (!command_iter.IsAtEnd()) { std::string command_name = command_iter.key(); if (command_name.empty()) { - chromeos::Error::AddToPrintf( - error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidCommandName, - "Unnamed command encountered in package '%s'", - package_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidCommandName, + "Unnamed command encountered in package '%s'", + package_name.c_str()); return false; } const base::DictionaryValue* command_def_json = nullptr; if (!command_iter.value().GetAsDictionary(&command_def_json)) { - chromeos::Error::AddToPrintf( - error, FROM_HERE, errors::commands::kDomain, - errors::commands::kTypeMismatch, - "Expecting an object for command '%s'", command_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kTypeMismatch, + "Expecting an object for command '%s'", + command_name.c_str()); return false; } // Construct the compound command name as "pkg_name.cmd_name". @@ -88,12 +87,11 @@ // this rule here. if (!cmd) { if (command_name.front() != '_') { - chromeos::Error::AddToPrintf( - error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidCommandName, - "The name of custom command '%s' in package '%s'" - " must start with '_'", - command_name.c_str(), package_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidCommandName, + "The name of custom command '%s' in package '%s'" + " must start with '_'", + command_name.c_str(), package_name.c_str()); return false; } } @@ -121,10 +119,10 @@ if (command_def_json->GetString(commands::attributes::kCommand_Visibility, &value)) { if (!visibility.FromString(value, error)) { - chromeos::Error::AddToPrintf( - error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidCommandVisibility, - "Error parsing command '%s'", full_command_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidCommandVisibility, + "Error parsing command '%s'", + full_command_name.c_str()); return false; } } @@ -132,14 +130,13 @@ if (command_def_json->GetString(commands::attributes::kCommand_Role, &value)) { if (!StringToEnum(value, &minimal_role)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, - errors::commands::kDomain, - errors::commands::kInvalidPropValue, - "Invalid role: '%s'", value.c_str()); - chromeos::Error::AddToPrintf( - error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidMinimalRole, - "Error parsing command '%s'", full_command_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidPropValue, + "Invalid role: '%s'", value.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidMinimalRole, + "Error parsing command '%s'", + full_command_name.c_str()); return false; } } @@ -187,7 +184,7 @@ const char* property_name, const ObjectSchema* base_def, const std::string& command_name, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { auto object_schema = ObjectSchema::Create(); const base::DictionaryValue* schema_def = nullptr; @@ -199,10 +196,10 @@ } if (!object_schema->FromJson(schema_def, base_def, error)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidObjectSchema, - "Invalid definition for command '%s'", - command_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidObjectSchema, + "Invalid definition for command '%s'", + command_name.c_str()); return {}; } @@ -212,7 +209,7 @@ std::unique_ptr<base::DictionaryValue> CommandDictionary::GetCommandsAsJson( const std::function<bool(const CommandDefinition*)>& filter, bool full_schema, - chromeos::ErrorPtr* error) const { + ErrorPtr* error) const { std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); for (const auto& pair : definitions_) { // Check if the command definition has the desired visibility.
diff --git a/libweave/src/commands/command_dictionary.h b/libweave/src/commands/command_dictionary.h index 9a3c407..1f18257 100644 --- a/libweave/src/commands/command_dictionary.h +++ b/libweave/src/commands/command_dictionary.h
@@ -12,7 +12,7 @@ #include <vector> #include <base/macros.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include "libweave/src/commands/command_definition.h" @@ -56,7 +56,7 @@ bool LoadCommands(const base::DictionaryValue& json, const std::string& category, const CommandDictionary* base_commands, - chromeos::ErrorPtr* error); + ErrorPtr* error); // Converts all the command definitions to a JSON object for CDD/Device // draft. // |filter| is a predicate used to filter out the command definitions to @@ -69,7 +69,7 @@ std::unique_ptr<base::DictionaryValue> GetCommandsAsJson( const std::function<bool(const CommandDefinition*)>& filter, bool full_schema, - chromeos::ErrorPtr* error) const; + ErrorPtr* error) const; // Returns the number of command definitions in the dictionary. size_t GetSize() const { return definitions_.size(); } // Checks if the dictionary has no command definitions. @@ -88,7 +88,7 @@ const char* property_name, const ObjectSchema* base_def, const std::string& command_name, - chromeos::ErrorPtr* error); + ErrorPtr* error); CommandMap definitions_; // List of all available command definitions. DISALLOW_COPY_AND_ASSIGN(CommandDictionary);
diff --git a/libweave/src/commands/command_dictionary_unittest.cc b/libweave/src/commands/command_dictionary_unittest.cc index 7dd3526..17c0af2 100644 --- a/libweave/src/commands/command_dictionary_unittest.cc +++ b/libweave/src/commands/command_dictionary_unittest.cc
@@ -101,7 +101,7 @@ TEST(CommandDictionary, LoadCommands_Failures) { CommandDictionary dict; - chromeos::ErrorPtr error; + ErrorPtr error; // Command definition is not an object. auto json = CreateDictionaryValue("{'robot':{'jump':0}}"); @@ -133,7 +133,7 @@ TEST(CommandDictionaryDeathTest, LoadCommands_RedefineInDifferentCategory) { // Redefine commands in different category. CommandDictionary dict; - chromeos::ErrorPtr error; + ErrorPtr error; auto json = CreateDictionaryValue("{'robot':{'jump':{}}}"); dict.LoadCommands(*json, "category1", nullptr, &error); ASSERT_DEATH(dict.LoadCommands(*json, "category2", nullptr, &error), @@ -145,7 +145,7 @@ // Custom command must start with '_'. CommandDictionary base_dict; CommandDictionary dict; - chromeos::ErrorPtr error; + ErrorPtr error; auto json = CreateDictionaryValue(R"({ 'base': { 'reboot': { @@ -172,7 +172,7 @@ // Redefine commands parameter type. CommandDictionary base_dict; CommandDictionary dict; - chromeos::ErrorPtr error; + ErrorPtr error; auto json = CreateDictionaryValue(R"({ 'base': { 'reboot': { @@ -527,7 +527,7 @@ TEST(CommandDictionary, LoadWithPermissions_InvalidVisibility) { CommandDictionary dict; - chromeos::ErrorPtr error; + ErrorPtr error; auto json = CreateDictionaryValue(R"({ 'base': { @@ -546,7 +546,7 @@ TEST(CommandDictionary, LoadWithPermissions_InvalidRole) { CommandDictionary dict; - chromeos::ErrorPtr error; + ErrorPtr error; auto json = CreateDictionaryValue(R"({ 'base': {
diff --git a/libweave/src/commands/command_instance.cc b/libweave/src/commands/command_instance.cc index de0fdd5..774589f 100644 --- a/libweave/src/commands/command_instance.cc +++ b/libweave/src/commands/command_instance.cc
@@ -5,8 +5,8 @@ #include "libweave/src/commands/command_instance.h" #include <base/values.h> -#include <chromeos/errors/error.h> #include <weave/enum_to_string.h> +#include <weave/error.h> #include <weave/export.h> #include "libweave/src/commands/command_definition.h" @@ -95,7 +95,7 @@ } bool CommandInstance::SetProgress(const base::DictionaryValue& progress, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { ObjectPropType obj_prop_type; obj_prop_type.SetObjectSchema(command_definition_->GetProgress()->Clone()); @@ -113,7 +113,7 @@ } bool CommandInstance::SetResults(const base::DictionaryValue& results, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { ObjectPropType obj_prop_type; obj_prop_type.SetObjectSchema(command_definition_->GetResults()->Clone()); @@ -139,7 +139,7 @@ bool GetCommandParameters(const base::DictionaryValue* json, const CommandDefinition* command_def, ValueMap* parameters, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { // Get the command parameters from 'parameters' property. base::DictionaryValue no_params; // Placeholder when no params are specified. const base::DictionaryValue* params = nullptr; @@ -147,10 +147,10 @@ if (json->Get(commands::attributes::kCommand_Parameters, ¶ms_value)) { // Make sure the "parameters" property is actually an object. if (!params_value->GetAsDictionary(¶ms)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, - errors::json::kObjectExpected, - "Property '%s' must be a JSON object", - commands::attributes::kCommand_Parameters); + Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, + errors::json::kObjectExpected, + "Property '%s' must be a JSON object", + commands::attributes::kCommand_Parameters); return false; } } else { @@ -175,7 +175,7 @@ CommandOrigin origin, const CommandDictionary& dictionary, std::string* command_id, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<CommandInstance> instance; std::string command_id_buffer; // used if |command_id| was nullptr. if (!command_id) @@ -184,9 +184,9 @@ // Get the command JSON object from the value. const base::DictionaryValue* json = nullptr; if (!value->GetAsDictionary(&json)) { - chromeos::Error::AddTo(error, FROM_HERE, errors::json::kDomain, - errors::json::kObjectExpected, - "Command instance is not a JSON object"); + Error::AddTo(error, FROM_HERE, errors::json::kDomain, + errors::json::kObjectExpected, + "Command instance is not a JSON object"); command_id->clear(); return instance; } @@ -198,27 +198,24 @@ // Get the command name from 'name' property. std::string command_name; if (!json->GetString(commands::attributes::kCommand_Name, &command_name)) { - chromeos::Error::AddTo(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kPropertyMissing, - "Command name is missing"); + Error::AddTo(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kPropertyMissing, "Command name is missing"); return instance; } // Make sure we know how to handle the command with this name. auto command_def = dictionary.FindCommand(command_name); if (!command_def) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidCommandName, - "Unknown command received: %s", - command_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidCommandName, + "Unknown command received: %s", command_name.c_str()); return instance; } ValueMap parameters; if (!GetCommandParameters(json, command_def, ¶meters, error)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kCommandFailed, - "Failed to validate command '%s'", - command_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kCommandFailed, + "Failed to validate command '%s'", command_name.c_str()); return instance; }
diff --git a/libweave/src/commands/command_instance.h b/libweave/src/commands/command_instance.h index 65726ac..3f81893 100644 --- a/libweave/src/commands/command_instance.h +++ b/libweave/src/commands/command_instance.h
@@ -12,7 +12,7 @@ #include <base/macros.h> #include <base/observer_list.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include <weave/command.h> #include "libweave/src/commands/prop_values.h" @@ -53,9 +53,9 @@ std::unique_ptr<base::DictionaryValue> GetProgress() const override; std::unique_ptr<base::DictionaryValue> GetResults() const override; bool SetProgress(const base::DictionaryValue& progress, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; bool SetResults(const base::DictionaryValue& results, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; void Abort() override; void Cancel() override; void Done() override; @@ -78,7 +78,7 @@ CommandOrigin origin, const CommandDictionary& dictionary, std::string* command_id, - chromeos::ErrorPtr* error); + ErrorPtr* error); // Sets the command ID (normally done by CommandQueue when the command // instance is added to it).
diff --git a/libweave/src/commands/command_instance_unittest.cc b/libweave/src/commands/command_instance_unittest.cc index cc1759b..2c2fe45 100644 --- a/libweave/src/commands/command_instance_unittest.cc +++ b/libweave/src/commands/command_instance_unittest.cc
@@ -138,7 +138,7 @@ TEST_F(CommandInstanceTest, FromJson_NotObject) { auto json = CreateValue("'string'"); - chromeos::ErrorPtr error; + ErrorPtr error; auto instance = CommandInstance::FromJson(json.get(), CommandOrigin::kCloud, dict_, nullptr, &error); EXPECT_EQ(nullptr, instance.get()); @@ -147,7 +147,7 @@ TEST_F(CommandInstanceTest, FromJson_NameMissing) { auto json = CreateDictionaryValue("{'param': 'value'}"); - chromeos::ErrorPtr error; + ErrorPtr error; auto instance = CommandInstance::FromJson(json.get(), CommandOrigin::kCloud, dict_, nullptr, &error); EXPECT_EQ(nullptr, instance.get()); @@ -156,7 +156,7 @@ TEST_F(CommandInstanceTest, FromJson_UnknownCommand) { auto json = CreateDictionaryValue("{'name': 'robot.scream'}"); - chromeos::ErrorPtr error; + ErrorPtr error; auto instance = CommandInstance::FromJson(json.get(), CommandOrigin::kCloud, dict_, nullptr, &error); EXPECT_EQ(nullptr, instance.get()); @@ -168,7 +168,7 @@ 'name': 'robot.speak', 'parameters': 'hello' })"); - chromeos::ErrorPtr error; + ErrorPtr error; auto instance = CommandInstance::FromJson(json.get(), CommandOrigin::kCloud, dict_, nullptr, &error); EXPECT_EQ(nullptr, instance.get()); @@ -185,7 +185,7 @@ 'volume': 20 } })"); - chromeos::ErrorPtr error; + ErrorPtr error; auto instance = CommandInstance::FromJson(json.get(), CommandOrigin::kCloud, dict_, nullptr, &error); EXPECT_EQ(nullptr, instance.get());
diff --git a/libweave/src/commands/command_manager.cc b/libweave/src/commands/command_manager.cc index 3d28dec..34b10e6 100644 --- a/libweave/src/commands/command_manager.cc +++ b/libweave/src/commands/command_manager.cc
@@ -6,8 +6,8 @@ #include <base/files/file_enumerator.h> #include <base/values.h> -#include <chromeos/errors/error.h> #include <weave/enum_to_string.h> +#include <weave/error.h> #include "libweave/src/commands/schema_constants.h" #include "libweave/src/utils.h" @@ -28,12 +28,12 @@ } bool CommandManager::LoadBaseCommands(const base::DictionaryValue& json, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { return base_dictionary_.LoadCommands(json, "", nullptr, error); } bool CommandManager::LoadBaseCommands(const base::FilePath& json_file_path, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<const base::DictionaryValue> json = LoadJsonDict(json_file_path, error); if (!json) @@ -43,7 +43,7 @@ bool CommandManager::LoadCommands(const base::DictionaryValue& json, const std::string& category, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { bool result = dictionary_.LoadCommands(json, category, &base_dictionary_, error); for (const auto& cb : on_command_changed_) @@ -52,7 +52,7 @@ } bool CommandManager::LoadCommands(const base::FilePath& json_file_path, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<const base::DictionaryValue> json = LoadJsonDict(json_file_path, error); if (!json) @@ -96,7 +96,7 @@ bool CommandManager::AddCommand(const base::DictionaryValue& command, UserRole role, std::string* id, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { auto command_instance = CommandInstance::FromJson( &command, CommandOrigin::kLocal, GetCommandDictionary(), nullptr, error); if (!command_instance) @@ -105,7 +105,7 @@ UserRole minimal_role = command_instance->GetCommandDefinition()->GetMinimalRole(); if (role < minimal_role) { - chromeos::Error::AddToPrintf( + 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()); @@ -125,7 +125,7 @@ bool CommandManager::SetCommandVisibility( const std::vector<std::string>& command_names, CommandDefinition::Visibility visibility, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { if (command_names.empty()) return true; @@ -136,9 +136,9 @@ for (const std::string& name : command_names) { CommandDefinition* def = dictionary_.FindCommand(name); if (!def) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidCommandName, - "Command '%s' is unknown", name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidCommandName, + "Command '%s' is unknown", name.c_str()); return false; } definitions.push_back(def);
diff --git a/libweave/src/commands/command_manager.h b/libweave/src/commands/command_manager.h index d49373f..f42e293 100644 --- a/libweave/src/commands/command_manager.h +++ b/libweave/src/commands/command_manager.h
@@ -35,7 +35,7 @@ bool AddCommand(const base::DictionaryValue& command, UserRole role, std::string* id, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; CommandInstance* FindCommand(const std::string& id) override; void AddOnCommandAddedCallback(const OnCommandCallback& callback) override; void AddOnCommandRemovedCallback(const OnCommandCallback& callback) override; @@ -53,27 +53,24 @@ // device kinds. // On success, returns true. Otherwise, |error| contains additional // error information. - bool LoadBaseCommands(const base::DictionaryValue& json, - chromeos::ErrorPtr* error); + bool LoadBaseCommands(const base::DictionaryValue& json, ErrorPtr* error); // Same as the overload above, but takes a path to a json file to read // the base command definitions from. - bool LoadBaseCommands(const base::FilePath& json_file_path, - chromeos::ErrorPtr* error); + bool LoadBaseCommands(const base::FilePath& json_file_path, ErrorPtr* error); // Loads device command schema for particular category. // See CommandDictionary::LoadCommands for detailed description of the // parameters. bool LoadCommands(const base::DictionaryValue& json, const std::string& category, - chromeos::ErrorPtr* error); + ErrorPtr* error); // Same as the overload above, but takes a path to a json file to read // the base command definitions from. Also, the command category is // derived from file name (without extension). So, if the path points to // "power_manager.json", the command category used will be "power_manager". - bool LoadCommands(const base::FilePath& json_file_path, - chromeos::ErrorPtr* error); + bool LoadCommands(const base::FilePath& json_file_path, ErrorPtr* error); // Startup method to be called by buffet daemon at startup. // Initializes the object and reads files in |definitions_path| to load @@ -90,7 +87,7 @@ // Changes the visibility of commands. bool SetCommandVisibility(const std::vector<std::string>& command_names, CommandDefinition::Visibility visibility, - chromeos::ErrorPtr* error); + ErrorPtr* error); private: CommandDictionary base_dictionary_; // Base/std command definitions/schemas.
diff --git a/libweave/src/commands/command_manager_unittest.cc b/libweave/src/commands/command_manager_unittest.cc index 5413c30..8d79db2 100644 --- a/libweave/src/commands/command_manager_unittest.cc +++ b/libweave/src/commands/command_manager_unittest.cc
@@ -193,7 +193,7 @@ EXPECT_EQ("all", dict.FindCommand("foo._bar")->GetVisibility().ToString()); EXPECT_EQ("none", dict.FindCommand("bar._quux")->GetVisibility().ToString()); - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE(manager.SetCommandVisibility( {"foo._baz", "foo._bar", "test.cmd"}, CommandDefinition::Visibility::GetLocal(), &error));
diff --git a/libweave/src/commands/object_schema.cc b/libweave/src/commands/object_schema.cc index b2c6307..3d697ed 100644 --- a/libweave/src/commands/object_schema.cc +++ b/libweave/src/commands/object_schema.cc
@@ -23,7 +23,7 @@ // Helper function for to create a PropType based on type string. // Generates an error if the string identifies an unknown type. std::unique_ptr<PropType> CreatePropType(const std::string& type_name, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { auto parts = SplitAtFirst(type_name, ".", false); const std::string& primary_type = parts.first; const std::string& array_type = parts.second; @@ -43,18 +43,18 @@ } } if (!prop) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kUnknownType, - "Unknown type %s", type_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kUnknownType, "Unknown type %s", + type_name.c_str()); } return prop; } // Generates "no_type_info" error. -void ErrorInvalidTypeInfo(chromeos::ErrorPtr* error) { - chromeos::Error::AddTo(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kNoTypeInfo, - "Unable to determine parameter type"); +void ErrorInvalidTypeInfo(ErrorPtr* error) { + Error::AddTo(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kNoTypeInfo, + "Unable to determine parameter type"); } // Helper function for PropFromJson to handle the case of parameter being @@ -62,7 +62,7 @@ // "prop":"..." std::unique_ptr<PropType> PropFromJsonString(const base::Value& value, const PropType* base_schema, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::string type_name; CHECK(value.GetAsString(&type_name)) << "Unable to get string value"; std::unique_ptr<PropType> prop = CreatePropType(type_name, error); @@ -132,7 +132,7 @@ // "prop":[...] std::unique_ptr<PropType> PropFromJsonArray(const base::Value& value, const PropType* base_schema, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<PropType> prop; const base::ListValue* list = nullptr; CHECK(value.GetAsList(&list)) << "Unable to get array value"; @@ -234,7 +234,7 @@ // "prop":{...} std::unique_ptr<PropType> PropFromJsonObject(const base::Value& value, const PropType* base_schema, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<PropType> prop; const base::DictionaryValue* dict = nullptr; CHECK(value.GetAsDictionary(&dict)) << "Unable to get dictionary value"; @@ -303,13 +303,12 @@ return p != properties_.end() ? p->second.get() : nullptr; } -bool ObjectSchema::MarkPropRequired(const std::string& name, - chromeos::ErrorPtr* error) { +bool ObjectSchema::MarkPropRequired(const std::string& name, ErrorPtr* error) { auto p = properties_.find(name); if (p == properties_.end()) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kUnknownProperty, - "Unknown property '%s'", name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kUnknownProperty, + "Unknown property '%s'", name.c_str()); return false; } p->second->MakeRequired(true); @@ -330,7 +329,7 @@ bool ObjectSchema::FromJson(const base::DictionaryValue* value, const ObjectSchema* object_schema, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { Properties properties; base::DictionaryValue::Iterator iter(*value); while (!iter.IsAtEnd()) { @@ -341,10 +340,10 @@ if (prop_type) { properties.emplace(iter.key(), std::move(prop_type)); } else { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidPropDef, - "Error in definition of property '%s'", - iter.key().c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidPropDef, + "Error in definition of property '%s'", + iter.key().c_str()); return false; } iter.Advance(); @@ -356,7 +355,7 @@ std::unique_ptr<PropType> ObjectSchema::PropFromJson( const base::Value& value, const PropType* base_schema, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { if (value.IsType(base::Value::TYPE_STRING)) { // A string value is a short-hand object specification and provides // the parameter type. @@ -368,10 +367,10 @@ // Full parameter definition. return PropFromJsonObject(value, base_schema, error); } - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kUnknownType, - "Unexpected JSON value type: %s", - EnumToString(value.GetType()).c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kUnknownType, + "Unexpected JSON value type: %s", + EnumToString(value.GetType()).c_str()); return nullptr; }
diff --git a/libweave/src/commands/object_schema.h b/libweave/src/commands/object_schema.h index b971dd8..c65d21e 100644 --- a/libweave/src/commands/object_schema.h +++ b/libweave/src/commands/object_schema.h
@@ -9,7 +9,7 @@ #include <memory> #include <string> -#include <chromeos/errors/error.h> +#include <weave/error.h> namespace base { class Value; @@ -52,7 +52,7 @@ // Marks the property with given name as "required". If |name| specifies // an unknown property, false is returned and |error| is set with detailed // error message for the failure. - bool MarkPropRequired(const std::string& name, chromeos::ErrorPtr* error); + bool MarkPropRequired(const std::string& name, ErrorPtr* error); // Specify whether extra properties are allowed on objects described by // this schema. When validating a value of an object type, we can @@ -74,7 +74,7 @@ // used as a base schema to inherit omitted properties and constraints from. bool FromJson(const base::DictionaryValue* value, const ObjectSchema* object_schema, - chromeos::ErrorPtr* error); + ErrorPtr* error); // Helper factory method to create a new instance of ObjectSchema object. static std::unique_ptr<ObjectSchema> Create(); @@ -82,7 +82,7 @@ // Helper method to load property type definitions from JSON. static std::unique_ptr<PropType> PropFromJson(const base::Value& value, const PropType* base_schema, - chromeos::ErrorPtr* error); + ErrorPtr* error); private: // Internal parameter type definition map.
diff --git a/libweave/src/commands/object_schema_unittest.cc b/libweave/src/commands/object_schema_unittest.cc index fc04dd5..c7c448a 100644 --- a/libweave/src/commands/object_schema_unittest.cc +++ b/libweave/src/commands/object_schema_unittest.cc
@@ -49,7 +49,7 @@ bool ValidateValue(const PropType& type, const base::Value& value, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<PropValue> val = type.CreatePropValue(value, error); return val != nullptr; } @@ -129,7 +129,7 @@ TEST(CommandSchema, IntPropType_Validate) { IntPropType prop; prop.AddMinMaxConstraint(2, 4); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE(ValidateValue(prop, *CreateValue("-1"), &error)); EXPECT_EQ("out_of_range", error->GetCode()); error.reset(); @@ -160,7 +160,7 @@ TEST(CommandSchema, IntPropType_CreateValue) { IntPropType prop; - chromeos::ErrorPtr error; + ErrorPtr error; auto val = prop.CreateValue(base::FundamentalValue{2}, &error); ASSERT_NE(nullptr, val.get()); EXPECT_EQ(nullptr, error.get()); @@ -231,7 +231,7 @@ TEST(CommandSchema, BoolPropType_Validate) { BooleanPropType prop; prop.FromJson(CreateDictionaryValue("{'enum':[true]}").get(), &prop, nullptr); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE(ValidateValue(prop, *CreateValue("false"), &error)); EXPECT_EQ("out_of_range", error->GetCode()); error.reset(); @@ -249,7 +249,7 @@ TEST(CommandSchema, BoolPropType_CreateValue) { BooleanPropType prop; - chromeos::ErrorPtr error; + ErrorPtr error; auto val = prop.CreateValue(base::FundamentalValue{true}, &error); ASSERT_NE(nullptr, val.get()); EXPECT_EQ(nullptr, error.get()); @@ -341,7 +341,7 @@ TEST(CommandSchema, DoublePropType_Validate) { DoublePropType prop; prop.AddMinMaxConstraint(-1.2, 1.3); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE(ValidateValue(prop, *CreateValue("-2"), &error)); EXPECT_EQ("out_of_range", error->GetCode()); error.reset(); @@ -366,7 +366,7 @@ TEST(CommandSchema, DoublePropType_CreateValue) { DoublePropType prop; - chromeos::ErrorPtr error; + ErrorPtr error; auto val = prop.CreateValue(base::FundamentalValue{2.0}, &error); ASSERT_NE(nullptr, val.get()); EXPECT_EQ(nullptr, error.get()); @@ -460,7 +460,7 @@ TEST(CommandSchema, StringPropType_Validate) { StringPropType prop; prop.AddLengthConstraint(1, 3); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE(ValidateValue(prop, *CreateValue("''"), &error)); EXPECT_EQ("out_of_range", error->GetCode()); error.reset(); @@ -491,7 +491,7 @@ TEST(CommandSchema, StringPropType_CreateValue) { StringPropType prop; - chromeos::ErrorPtr error; + ErrorPtr error; auto val = prop.CreateValue(base::StringValue{"blah"}, &error); ASSERT_NE(nullptr, val.get()); EXPECT_EQ(nullptr, error.get()); @@ -682,7 +682,7 @@ "'password':{'maxLength':100,'minLength':6}}," "'required':['expires','password']}").get(), nullptr, nullptr); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_TRUE(ValidateValue( prop, *CreateValue("{'expires':10,'password':'abcdef'}"), &error)); error.reset(); @@ -720,7 +720,7 @@ "'enum':[{'width':10,'height':20},{'width':100,'height':200}]}") .get(), nullptr, nullptr)); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_TRUE( ValidateValue(prop, *CreateValue("{'height':20,'width':10}"), &error)); error.reset(); @@ -749,7 +749,7 @@ {"height", int_type.CreateValue(base::FundamentalValue{20}, nullptr)}, }; - chromeos::ErrorPtr error; + ErrorPtr error; auto val = prop.CreateValue( *CreateDictionaryValue("{'width': 10, 'height': 20}"), &error); ASSERT_NE(nullptr, val.get()); @@ -831,7 +831,7 @@ CreateDictionaryValue("{'items':{'minimum':2.3, 'maximum':10.5}}").get(), nullptr, nullptr); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_TRUE(ValidateValue(prop, *CreateValue("[3,4,10.5]"), &error)); error.reset(); @@ -851,7 +851,7 @@ .get(), nullptr, nullptr); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_TRUE(ValidateValue(prop, *CreateValue("[2,3]"), &error)); error.reset(); @@ -872,7 +872,7 @@ .get(), nullptr, nullptr)); - chromeos::ErrorPtr error; + ErrorPtr error; ValueVector arr; auto val = prop.CreateValue(base::ListValue{}, &error); @@ -897,7 +897,7 @@ TEST(CommandSchema, ArrayPropType_NestedArrays_NotSupported) { ArrayPropType prop; - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE(prop.FromJson( CreateDictionaryValue("{'items':{'items':'integer'}}").get(), nullptr, &error)); @@ -1334,7 +1334,7 @@ TEST(CommandSchema, ObjectSchema_FromJson_BaseSchema_Failures) { ObjectSchema schema; - chromeos::ErrorPtr error; + ErrorPtr error; const char* schema_str = "{" "'param1':{}" @@ -1605,7 +1605,7 @@ TEST(CommandSchema, RequiredProperties_Failures) { ObjectPropType obj_type; - chromeos::ErrorPtr error; + ErrorPtr error; auto type_str = R"({ 'properties': { @@ -1688,7 +1688,7 @@ nullptr)); auto val_json = "{'param2':20}"; - chromeos::ErrorPtr error; + ErrorPtr error; auto value = prop.CreatePropValue(*CreateDictionaryValue(val_json).get(), &error); ASSERT_EQ(nullptr, value);
diff --git a/libweave/src/commands/prop_constraints.cc b/libweave/src/commands/prop_constraints.cc index 0b77ec5..c1ab1c4 100644 --- a/libweave/src/commands/prop_constraints.cc +++ b/libweave/src/commands/prop_constraints.cc
@@ -30,35 +30,33 @@ Constraint::~Constraint() { } -bool Constraint::ReportErrorLessThan(chromeos::ErrorPtr* error, +bool Constraint::ReportErrorLessThan(ErrorPtr* error, const std::string& val, const std::string& limit) { - chromeos::Error::AddToPrintf( - error, FROM_HERE, errors::commands::kDomain, - errors::commands::kOutOfRange, - "Value %s is out of range. It must not be less than %s", val.c_str(), - limit.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kOutOfRange, + "Value %s is out of range. It must not be less than %s", + val.c_str(), limit.c_str()); return false; } -bool Constraint::ReportErrorGreaterThan(chromeos::ErrorPtr* error, +bool Constraint::ReportErrorGreaterThan(ErrorPtr* error, const std::string& val, const std::string& limit) { - chromeos::Error::AddToPrintf( - error, FROM_HERE, errors::commands::kDomain, - errors::commands::kOutOfRange, - "Value %s is out of range. It must not be greater than %s", val.c_str(), - limit.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kOutOfRange, + "Value %s is out of range. It must not be greater than %s", + val.c_str(), limit.c_str()); return false; } -bool Constraint::ReportErrorNotOneOf(chromeos::ErrorPtr* error, +bool Constraint::ReportErrorNotOneOf(ErrorPtr* error, const std::string& val, const std::vector<std::string>& values) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kOutOfRange, - "Value %s is invalid. Expected one of [%s]", - val.c_str(), Join(",", values).c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kOutOfRange, + "Value %s is invalid. Expected one of [%s]", val.c_str(), + Join(",", values).c_str()); return false; } @@ -97,21 +95,20 @@ } bool ConstraintStringLengthMin::Validate(const PropValue& value, - chromeos::ErrorPtr* error) const { + ErrorPtr* error) const { CHECK(value.GetString()) << "Expecting a string value for this constraint"; const std::string& str = value.GetString()->GetValue(); int length = static_cast<int>(str.size()); if (length < limit_.value) { if (limit_.value == 1) { - chromeos::Error::AddTo(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kOutOfRange, - "String must not be empty"); + Error::AddTo(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kOutOfRange, "String must not be empty"); } else { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kOutOfRange, - "String must be at least %d characters long," - " actual length of string '%s' is %d", - limit_.value, str.c_str(), length); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kOutOfRange, + "String must be at least %d characters long," + " actual length of string '%s' is %d", + limit_.value, str.c_str(), length); } return false; } @@ -138,16 +135,16 @@ } bool ConstraintStringLengthMax::Validate(const PropValue& value, - chromeos::ErrorPtr* error) const { + ErrorPtr* error) const { CHECK(value.GetString()) << "Expecting a string value for this constraint"; const std::string& str = value.GetString()->GetValue(); int length = static_cast<int>(str.size()); if (length > limit_.value) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kOutOfRange, - "String must be no more than %d character(s) " - "long, actual length of string '%s' is %d", - limit_.value, str.c_str(), length); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kOutOfRange, + "String must be no more than %d character(s) " + "long, actual length of string '%s' is %d", + limit_.value, str.c_str(), length); return false; } return true; @@ -168,8 +165,7 @@ : set_(std::move(set)) {} ConstraintOneOf::ConstraintOneOf(ValueVector set) : set_(std::move(set)) {} -bool ConstraintOneOf::Validate(const PropValue& value, - chromeos::ErrorPtr* error) const { +bool ConstraintOneOf::Validate(const PropValue& value, ErrorPtr* error) const { for (const auto& item : set_.value) { if (value.IsEqual(item.get())) return true;
diff --git a/libweave/src/commands/prop_constraints.h b/libweave/src/commands/prop_constraints.h index c0744d5..be06f6f 100644 --- a/libweave/src/commands/prop_constraints.h +++ b/libweave/src/commands/prop_constraints.h
@@ -11,7 +11,7 @@ #include <base/macros.h> #include <base/values.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include "libweave/src/commands/prop_values.h" #include "libweave/src/commands/schema_constants.h" @@ -42,8 +42,7 @@ // Validates a parameter against the constraint. Returns true if parameter // value satisfies the constraint, otherwise fills the optional |error| with // the details for the failure. - virtual bool Validate(const PropValue& value, - chromeos::ErrorPtr* error) const = 0; + virtual bool Validate(const PropValue& value, ErrorPtr* error) const = 0; // Makes a full copy of this Constraint instance. virtual std::unique_ptr<Constraint> Clone() const = 0; @@ -77,14 +76,14 @@ // Since these functions could be used by constraint objects for various // data types, the values used in validation are expected to be // send as strings already. - static bool ReportErrorLessThan(chromeos::ErrorPtr* error, + static bool ReportErrorLessThan(ErrorPtr* error, const std::string& val, const std::string& limit); - static bool ReportErrorGreaterThan(chromeos::ErrorPtr* error, + static bool ReportErrorGreaterThan(ErrorPtr* error, const std::string& val, const std::string& limit); - static bool ReportErrorNotOneOf(chromeos::ErrorPtr* error, + static bool ReportErrorNotOneOf(ErrorPtr* error, const std::string& val, const std::vector<std::string>& values); @@ -130,8 +129,7 @@ ConstraintType GetType() const override { return ConstraintType::Min; } // Implementation of Constraint::Validate(). - bool Validate(const PropValue& value, - chromeos::ErrorPtr* error) const override { + bool Validate(const PropValue& value, ErrorPtr* error) const override { const T& v = static_cast<const TypedValueBase<T>&>(value).GetValue(); if (v < this->limit_.value) { return this->ReportErrorLessThan(error, std::to_string(v), @@ -171,8 +169,7 @@ ConstraintType GetType() const override { return ConstraintType::Max; } // Implementation of Constraint::Validate(). - bool Validate(const PropValue& value, - chromeos::ErrorPtr* error) const override { + bool Validate(const PropValue& value, ErrorPtr* error) const override { const T& v = static_cast<const TypedValueBase<T>&>(value).GetValue(); if (v > this->limit_.value) return this->ReportErrorGreaterThan(error, std::to_string(v), @@ -232,8 +229,7 @@ } // Implementation of Constraint::Validate(). - bool Validate(const PropValue& value, - chromeos::ErrorPtr* error) const override; + bool Validate(const PropValue& value, ErrorPtr* error) const override; // Implementation of Constraint::Clone(). std::unique_ptr<Constraint> Clone() const override; @@ -261,8 +257,7 @@ } // Implementation of Constraint::Validate(). - bool Validate(const PropValue& value, - chromeos::ErrorPtr* error) const override; + bool Validate(const PropValue& value, ErrorPtr* error) const override; // Implementation of Constraint::Clone(). std::unique_ptr<Constraint> Clone() const override; @@ -292,8 +287,7 @@ bool HasOverriddenAttributes() const override { return !set_.is_inherited; } // Implementation of Constraint::Validate(). - bool Validate(const PropValue& value, - chromeos::ErrorPtr* error) const override; + bool Validate(const PropValue& value, ErrorPtr* error) const override; // Implementation of Constraint::Clone(). std::unique_ptr<Constraint> Clone() const override;
diff --git a/libweave/src/commands/prop_types.cc b/libweave/src/commands/prop_types.cc index 5a77610..d946675 100644 --- a/libweave/src/commands/prop_types.cc +++ b/libweave/src/commands/prop_types.cc
@@ -123,13 +123,13 @@ bool PropType::FromJson(const base::DictionaryValue* value, const PropType* base_schema, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { if (base_schema && base_schema->GetType() != GetType()) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kPropTypeChanged, - "Redefining a property of type %s as %s", - base_schema->GetTypeAsString().c_str(), - GetTypeAsString().c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kPropTypeChanged, + "Redefining a property of type %s as %s", + base_schema->GetTypeAsString().c_str(), + GetTypeAsString().c_str()); return false; } based_on_schema_ = (base_schema != nullptr); @@ -159,9 +159,9 @@ while (!iter.IsAtEnd()) { std::string key = iter.key(); if (processed_keys.find(key) == processed_keys.end()) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kUnknownProperty, - "Unexpected property '%s'", key.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kUnknownProperty, + "Unexpected property '%s'", key.c_str()); return false; } iter.Advance(); @@ -186,10 +186,10 @@ if (value->GetWithoutPathExpansion(commands::attributes::kDefault, &defval)) { std::unique_ptr<PropValue> prop_value = CreatePropValue(*defval, error); if (!prop_value) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidPropValue, - "Invalid value for property '%s'", - commands::attributes::kDefault); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidPropValue, + "Invalid value for property '%s'", + commands::attributes::kDefault); return false; } default_.value = std::move(prop_value); @@ -231,7 +231,7 @@ } bool PropType::ValidateConstraints(const PropValue& value, - chromeos::ErrorPtr* error) const { + ErrorPtr* error) const { for (const auto& pair : constraints_) { if (!pair.second->Validate(value, error)) return false; @@ -299,7 +299,7 @@ static std::unique_ptr<Constraint> LoadOneOfConstraint( const base::DictionaryValue* value, const PropType* prop_type, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<Constraint> constraint; const base::Value* list = nullptr; // Owned by |value| CHECK(value->Get(commands::attributes::kOneOf_Enum, &list)) @@ -318,7 +318,7 @@ static std::unique_ptr<Constraint> LoadMinMaxConstraint( const char* dict_key, const base::DictionaryValue* value, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<Constraint> constraint; InheritableAttribute<T> limit; @@ -338,7 +338,7 @@ bool PropTypeBase<Derived, Value, T>::ConstraintsFromJson( const base::DictionaryValue* value, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { if (!PropType::ConstraintsFromJson(value, processed_keys, error)) return false; @@ -363,7 +363,7 @@ bool NumericPropTypeBase<Derived, Value, T>::ConstraintsFromJson( const base::DictionaryValue* value, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { if (!Base::ConstraintsFromJson(value, processed_keys, error)) return false; @@ -398,7 +398,7 @@ bool StringPropType::ConstraintsFromJson(const base::DictionaryValue* value, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { if (!Base::ConstraintsFromJson(value, processed_keys, error)) return false; @@ -499,7 +499,7 @@ bool ObjectPropType::ObjectSchemaFromJson(const base::DictionaryValue* value, const PropType* base_schema, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { if (!Base::ObjectSchemaFromJson(value, base_schema, processed_keys, error)) return false; @@ -517,20 +517,20 @@ processed_keys->insert(kObject_Properties); object_schema.reset(new ObjectSchema); if (!object_schema->FromJson(props, base_object_schema, error)) { - chromeos::Error::AddTo(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidObjectSchema, - "Error parsing object property schema"); + Error::AddTo(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidObjectSchema, + "Error parsing object property schema"); return false; } } else if (base_object_schema) { object_schema = base_object_schema->Clone(); inherited = true; } else { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidObjectSchema, - "Object type definition must include the " - "object schema ('%s' field not found)", - kObject_Properties); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidObjectSchema, + "Object type definition must include the " + "object schema ('%s' field not found)", + kObject_Properties); return false; } bool extra_properties_allowed = false; @@ -545,10 +545,10 @@ processed_keys->insert(commands::attributes::kObject_Required); const base::ListValue* required_list = nullptr; if (!required->GetAsList(&required_list)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidObjectSchema, - "Property '%s' must be an array", - commands::attributes::kObject_Required); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidObjectSchema, + "Property '%s' must be an array", + commands::attributes::kObject_Required); return false; } for (const base::Value* value : *required_list) { @@ -556,7 +556,7 @@ if (!value->GetAsString(&name)) { std::string json_value; CHECK(base::JSONWriter::Write(*value, &json_value)); - chromeos::Error::AddToPrintf( + Error::AddToPrintf( error, FROM_HERE, errors::commands::kDomain, errors::commands::kInvalidObjectSchema, "Property '%s' contains invalid element (%s). String expected", @@ -615,7 +615,7 @@ bool ArrayPropType::ObjectSchemaFromJson(const base::DictionaryValue* value, const PropType* base_schema, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { if (!Base::ObjectSchemaFromJson(value, base_schema, processed_keys, error)) return false; @@ -632,9 +632,9 @@ if (!item_type) return false; if (item_type->GetType() == ValueType::Array) { - chromeos::Error::AddTo(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidObjectSchema, - "Arrays of arrays are not supported"); + Error::AddTo(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidObjectSchema, + "Arrays of arrays are not supported"); return false; } SetItemType(std::move(item_type)); @@ -643,11 +643,11 @@ item_type_.value = base_type->Clone(); item_type_.is_inherited = true; } else { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidObjectSchema, - "Array type definition must include the " - "array item type ('%s' field not found)", - kItems); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidObjectSchema, + "Array type definition must include the " + "array item type ('%s' field not found)", + kItems); return false; } }
diff --git a/libweave/src/commands/prop_types.h b/libweave/src/commands/prop_types.h index c8b1338..0960c3a 100644 --- a/libweave/src/commands/prop_types.h +++ b/libweave/src/commands/prop_types.h
@@ -13,7 +13,7 @@ #include <utility> #include <vector> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include "libweave/src/commands/prop_constraints.h" #include "libweave/src/commands/prop_values.h" @@ -86,9 +86,8 @@ virtual std::unique_ptr<PropType> Clone() const; // Creates an instance of associated value object. - virtual std::unique_ptr<PropValue> CreatePropValue( - const base::Value& value, - chromeos::ErrorPtr* error) const = 0; + virtual std::unique_ptr<PropValue> CreatePropValue(const base::Value& value, + ErrorPtr* error) const = 0; // Saves the parameter type definition as a JSON object. // If |full_schema| is set to true, the full type definition is saved, @@ -111,18 +110,18 @@ // error information. virtual bool FromJson(const base::DictionaryValue* value, const PropType* base_schema, - chromeos::ErrorPtr* error); + ErrorPtr* error); // Helper function to load object schema from JSON. virtual bool ObjectSchemaFromJson(const base::DictionaryValue* value, const PropType* base_schema, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { return true; } // Helper function to load type-specific constraints from JSON. virtual bool ConstraintsFromJson(const base::DictionaryValue* value, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { return true; } @@ -152,8 +151,7 @@ Constraint* GetConstraint(ConstraintType constraint_type); // Validates the given value against all the constraints. - bool ValidateConstraints(const PropValue& value, - chromeos::ErrorPtr* error) const; + bool ValidateConstraints(const PropValue& value, ErrorPtr* error) const; protected: friend class StatePackage; @@ -185,20 +183,19 @@ // Overrides from PropType. ValueType GetType() const override { return GetValueType<T>(); } - std::unique_ptr<PropValue> CreatePropValue( - const base::Value& value, - chromeos::ErrorPtr* error) const override { + std::unique_ptr<PropValue> CreatePropValue(const base::Value& value, + ErrorPtr* error) const override { return CreateValue(value, error); } std::unique_ptr<Value> CreateValue(const base::Value& value, - chromeos::ErrorPtr* error) const { + ErrorPtr* error) const { return Value::CreateFromJson(value, *this, error); } bool ConstraintsFromJson(const base::DictionaryValue* value, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; protected: std::unique_ptr<PropValue> CreateDefaultValue() const override { @@ -215,7 +212,7 @@ using Base = PropTypeBase<Derived, Value, T>; bool ConstraintsFromJson(const base::DictionaryValue* value, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; // Helper method to set and obtain a min/max constraint values. // Used mostly for unit testing. @@ -267,7 +264,7 @@ bool ConstraintsFromJson(const base::DictionaryValue* value, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; // Helper methods to add and inspect simple constraints. // Used mostly for unit testing. @@ -305,7 +302,7 @@ bool ObjectSchemaFromJson(const base::DictionaryValue* value, const PropType* base_schema, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; // Returns a schema for Object-type parameter. inline const ObjectSchema* GetObjectSchemaPtr() const { @@ -338,7 +335,7 @@ bool ObjectSchemaFromJson(const base::DictionaryValue* value, const PropType* base_schema, std::set<std::string>* processed_keys, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; // Returns a type for Array elements. inline const PropType* GetItemTypePtr() const {
diff --git a/libweave/src/commands/prop_values.h b/libweave/src/commands/prop_values.h index 939356a..cb8a662 100644 --- a/libweave/src/commands/prop_values.h +++ b/libweave/src/commands/prop_values.h
@@ -9,7 +9,7 @@ #include <memory> #include <string> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include "libweave/src/commands/schema_utils.h" @@ -177,7 +177,7 @@ static std::unique_ptr<Derived> CreateFromJson(const base::Value& value, const PropType& type, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { T tmp_value; if (!TypedValueFromJson(&value, &type, &tmp_value, error)) return nullptr;
diff --git a/libweave/src/commands/schema_utils.cc b/libweave/src/commands/schema_utils.cc index e2c8293..85455ed 100644 --- a/libweave/src/commands/schema_utils.cc +++ b/libweave/src/commands/schema_utils.cc
@@ -20,13 +20,13 @@ void ReportJsonTypeMismatch(const tracked_objects::Location& location, const base::Value* value_in, const std::string& expected_type, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::string value_as_string; base::JSONWriter::Write(*value_in, &value_as_string); - chromeos::Error::AddToPrintf(error, location, errors::commands::kDomain, - errors::commands::kTypeMismatch, - "Unable to convert value %s into %s", - value_as_string.c_str(), expected_type.c_str()); + Error::AddToPrintf(error, location, errors::commands::kDomain, + errors::commands::kTypeMismatch, + "Unable to convert value %s into %s", + value_as_string.c_str(), expected_type.c_str()); } // Template version of ReportJsonTypeMismatch that deduces the type of expected @@ -36,19 +36,19 @@ bool ReportUnexpectedJson(const tracked_objects::Location& location, const base::Value* value_in, T*, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { ReportJsonTypeMismatch(location, value_in, PropType::GetTypeStringFromType(GetValueType<T>()), error); return false; } -bool ErrorMissingProperty(chromeos::ErrorPtr* error, +bool ErrorMissingProperty(ErrorPtr* error, const tracked_objects::Location& location, const char* param_name) { - chromeos::Error::AddToPrintf(error, location, errors::commands::kDomain, - errors::commands::kPropertyMissing, - "Required parameter missing: %s", param_name); + Error::AddToPrintf(error, location, errors::commands::kDomain, + errors::commands::kPropertyMissing, + "Required parameter missing: %s", param_name); return false; } @@ -97,7 +97,7 @@ bool TypedValueFromJson(const base::Value* value_in, const PropType* type, bool* value_out, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { return value_in->GetAsBoolean(value_out) || ReportUnexpectedJson(FROM_HERE, value_in, value_out, error); } @@ -105,7 +105,7 @@ bool TypedValueFromJson(const base::Value* value_in, const PropType* type, int* value_out, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { return value_in->GetAsInteger(value_out) || ReportUnexpectedJson(FROM_HERE, value_in, value_out, error); } @@ -113,7 +113,7 @@ bool TypedValueFromJson(const base::Value* value_in, const PropType* type, double* value_out, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { return value_in->GetAsDouble(value_out) || ReportUnexpectedJson(FROM_HERE, value_in, value_out, error); } @@ -121,7 +121,7 @@ bool TypedValueFromJson(const base::Value* value_in, const PropType* type, std::string* value_out, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { return value_in->GetAsString(value_out) || ReportUnexpectedJson(FROM_HERE, value_in, value_out, error); } @@ -129,7 +129,7 @@ bool TypedValueFromJson(const base::Value* value_in, const PropType* type, ValueMap* value_out, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { const base::DictionaryValue* dict = nullptr; if (!value_in->GetAsDictionary(&dict)) return ReportUnexpectedJson(FROM_HERE, value_in, value_out, error); @@ -148,10 +148,10 @@ << "Unable to get parameter"; auto value = pair.second->CreatePropValue(*param_value, error); if (!value) { - chromeos::Error::AddToPrintf( - error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidPropValue, - "Invalid value for property '%s'", pair.first.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidPropValue, + "Invalid value for property '%s'", + pair.first.c_str()); return false; } value_out->emplace_hint(value_out->end(), pair.first, std::move(value)); @@ -172,9 +172,9 @@ std::string key = iter.key(); if (keys_processed.find(key) == keys_processed.end() && !object_schema->GetExtraPropertiesAllowed()) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kUnknownProperty, - "Unrecognized parameter '%s'", key.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kUnknownProperty, + "Unrecognized parameter '%s'", key.c_str()); return false; } iter.Advance(); @@ -185,10 +185,9 @@ const PropType* prop_type = pair.second->GetPropType(); CHECK(prop_type) << "Value property type must be available"; if (!prop_type->ValidateConstraints(*pair.second, error)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, - errors::commands::kInvalidPropValue, - "Invalid value for property '%s'", - pair.first.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain, + errors::commands::kInvalidPropValue, + "Invalid value for property '%s'", pair.first.c_str()); return false; } } @@ -198,7 +197,7 @@ bool TypedValueFromJson(const base::Value* value_in, const PropType* type, ValueVector* value_out, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { const base::ListValue* list = nullptr; if (!value_in->GetAsList(&list)) return ReportUnexpectedJson(FROM_HERE, value_in, value_out, error);
diff --git a/libweave/src/commands/schema_utils.h b/libweave/src/commands/schema_utils.h index f00a89f..5691ddd 100644 --- a/libweave/src/commands/schema_utils.h +++ b/libweave/src/commands/schema_utils.h
@@ -13,7 +13,7 @@ #include <vector> #include <base/values.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> namespace weave { @@ -81,27 +81,27 @@ bool TypedValueFromJson(const base::Value* value_in, const PropType* type, bool* value_out, - chromeos::ErrorPtr* error); + ErrorPtr* error); bool TypedValueFromJson(const base::Value* value_in, const PropType* type, int* value_out, - chromeos::ErrorPtr* error); + ErrorPtr* error); bool TypedValueFromJson(const base::Value* value_in, const PropType* type, double* value_out, - chromeos::ErrorPtr* error); + ErrorPtr* error); bool TypedValueFromJson(const base::Value* value_in, const PropType* type, std::string* value_out, - chromeos::ErrorPtr* error); + ErrorPtr* error); bool TypedValueFromJson(const base::Value* value_in, const PropType* type, ValueMap* value_out, - chromeos::ErrorPtr* error); + ErrorPtr* error); bool TypedValueFromJson(const base::Value* value_in, const PropType* type, ValueVector* value_out, - chromeos::ErrorPtr* error); + ErrorPtr* error); bool operator==(const ValueMap& obj1, const ValueMap& obj2); bool operator==(const ValueVector& arr1, const ValueVector& arr2);
diff --git a/libweave/src/commands/schema_utils_unittest.cc b/libweave/src/commands/schema_utils_unittest.cc index 8acb1ee..9dfadc3 100644 --- a/libweave/src/commands/schema_utils_unittest.cc +++ b/libweave/src/commands/schema_utils_unittest.cc
@@ -79,7 +79,7 @@ TypedValueFromJson(CreateValue("false").get(), nullptr, &value, nullptr)); EXPECT_FALSE(value); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE( TypedValueFromJson(CreateValue("0").get(), nullptr, &value, &error)); EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode()); @@ -101,7 +101,7 @@ TypedValueFromJson(CreateValue("-1234").get(), nullptr, &value, nullptr)); EXPECT_EQ(-1234, value); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE( TypedValueFromJson(CreateValue("'abc'").get(), nullptr, &value, &error)); EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode()); @@ -129,7 +129,7 @@ &value, nullptr)); EXPECT_EQ(-123.0, value); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE( TypedValueFromJson(CreateValue("'abc'").get(), nullptr, &value, &error)); EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode()); @@ -151,7 +151,7 @@ TypedValueFromJson(CreateValue("'abc'").get(), nullptr, &value, nullptr)); EXPECT_EQ("abc", value); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE( TypedValueFromJson(CreateValue("12").get(), nullptr, &value, &error)); EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode()); @@ -181,7 +181,7 @@ "name", name_prop.CreateValue(base::StringValue("Bob"), nullptr))); EXPECT_EQ(value2, value); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE( TypedValueFromJson(CreateValue("'abc'").get(), nullptr, &value, &error)); EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode()); @@ -202,7 +202,7 @@ arr2.push_back(str_type.CreateValue(base::StringValue{"bar"}, nullptr)); EXPECT_EQ(arr2, arr); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE(TypedValueFromJson(CreateValue("['baz', 'ab']").get(), &type, &arr, &error)); EXPECT_EQ(errors::commands::kOutOfRange, error->GetCode());
diff --git a/libweave/src/commands/user_role.cc b/libweave/src/commands/user_role.cc index 4f69849..f6b8c7d 100644 --- a/libweave/src/commands/user_role.cc +++ b/libweave/src/commands/user_role.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include <chromeos/errors/error.h> +#include <weave/error.h> #include <weave/commands.h> #include <weave/enum_to_string.h>
diff --git a/libweave/src/device_registration_info.cc b/libweave/src/device_registration_info.cc index 3573cb8..d3dc1c0 100644 --- a/libweave/src/device_registration_info.cc +++ b/libweave/src/device_registration_info.cc
@@ -41,13 +41,12 @@ namespace { -inline void SetUnexpectedError(chromeos::ErrorPtr* error) { - chromeos::Error::AddTo(error, FROM_HERE, kErrorDomainGCD, - "unexpected_response", "Unexpected GCD error"); +inline void SetUnexpectedError(ErrorPtr* error) { + Error::AddTo(error, FROM_HERE, kErrorDomainGCD, "unexpected_response", + "Unexpected GCD error"); } -void ParseGCDError(const base::DictionaryValue* json, - chromeos::ErrorPtr* error) { +void ParseGCDError(const base::DictionaryValue* json, ErrorPtr* error) { const base::Value* list_value = nullptr; const base::ListValue* error_list = nullptr; if (!json->Get("error.errors", &list_value) || @@ -67,8 +66,8 @@ std::string error_code, error_message; if (error_object->GetString("reason", &error_code) && error_object->GetString("message", &error_message)) { - chromeos::Error::AddTo(error, FROM_HERE, kErrorDomainGCDServer, - error_code, error_message); + Error::AddTo(error, FROM_HERE, kErrorDomainGCDServer, error_code, + error_message); } else { SetUnexpectedError(error); } @@ -95,11 +94,9 @@ return AppendQueryParams(result, params); } -void IgnoreCloudError(const chromeos::Error*) { -} +void IgnoreCloudError(const Error*) {} -void IgnoreCloudErrorWithCallback(const base::Closure& cb, - const chromeos::Error*) { +void IgnoreCloudErrorWithCallback(const base::Closure& cb, const Error*) { cb.Run(); } @@ -118,8 +115,7 @@ HttpClient* transport) : method_{method}, url_{url}, transport_{transport} {} - std::unique_ptr<HttpClient::Response> SendAndBlock( - chromeos::ErrorPtr* error) { + std::unique_ptr<HttpClient::Response> SendAndBlock(ErrorPtr* error) { return transport_->SendRequestAndBlock(method_, url_, GetFullHeaders(), data_, error); } @@ -172,16 +168,16 @@ std::unique_ptr<base::DictionaryValue> ParseJsonResponse( const HttpClient::Response& response, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { // Make sure we have a correct content type. Do not try to parse // binary files, or HTML output. Limit to application/json and text/plain. std::string content_type = SplitAtFirst(response.GetContentType(), ";", true).first; if (content_type != http::kJson && content_type != http::kPlain) { - chromeos::Error::AddTo(error, FROM_HERE, errors::json::kDomain, - "non_json_content_type", - "Unexpected response content type: " + content_type); + Error::AddTo(error, FROM_HERE, errors::json::kDomain, + "non_json_content_type", + "Unexpected response content type: " + content_type); return std::unique_ptr<base::DictionaryValue>(); } @@ -190,15 +186,15 @@ auto value = base::JSONReader::ReadAndReturnError(json, base::JSON_PARSE_RFC, nullptr, &error_message); if (!value) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, - errors::json::kParseError, - "Error '%s' occurred parsing JSON string '%s'", - error_message.c_str(), json.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, + 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)) { - chromeos::Error::AddToPrintf( + Error::AddToPrintf( error, FROM_HERE, errors::json::kDomain, errors::json::kObjectExpected, "Response is not a valid JSON object: '%s'", json.c_str()); return std::unique_ptr<base::DictionaryValue>(); @@ -301,21 +297,20 @@ } bool DeviceRegistrationInfo::VerifyRegistrationCredentials( - chromeos::ErrorPtr* error) const { + ErrorPtr* error) const { const bool have_credentials = HaveRegistrationCredentials(); VLOG(2) << "Device registration record " << ((have_credentials) ? "found" : "not found."); if (!have_credentials) - chromeos::Error::AddTo(error, FROM_HERE, kErrorDomainGCD, - "device_not_registered", - "No valid device registration record found"); + Error::AddTo(error, FROM_HERE, kErrorDomainGCD, "device_not_registered", + "No valid device registration record found"); return have_credentials; } std::unique_ptr<base::DictionaryValue> DeviceRegistrationInfo::ParseOAuthResponse(const HttpClient::Response& response, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { int code = response.GetStatusCode(); auto resp = ParseJsonResponse(response, error); if (resp && code >= http::kBadRequest) { @@ -331,8 +326,8 @@ if (!resp->GetString("error_description", &error_message)) { error_message = "Unexpected OAuth error"; } - chromeos::Error::AddTo(error, FROM_HERE, kErrorDomainOAuth2, error_code, - error_message); + Error::AddTo(error, FROM_HERE, kErrorDomainOAuth2, error_code, + error_message); return std::unique_ptr<base::DictionaryValue>(); } return resp; @@ -343,7 +338,7 @@ const CloudRequestErrorCallback& error_callback) { LOG(INFO) << "Refreshing access token."; - chromeos::ErrorPtr error; + ErrorPtr error; if (!VerifyRegistrationCredentials(&error)) { error_callback.Run(error.get()); return; @@ -394,7 +389,7 @@ const HttpClient::Response& response) { VLOG(1) << "Refresh access token request with ID " << id << " completed"; oauth2_backoff_entry_->InformOfRequest(true); - chromeos::ErrorPtr error; + ErrorPtr error; auto json = ParseOAuthResponse(response, &error); if (!json) { error_callback->Run(error.get()); @@ -406,9 +401,8 @@ !json->GetInteger("expires_in", &expires_in) || access_token_.empty() || expires_in <= 0) { LOG(ERROR) << "Access token unavailable."; - chromeos::Error::AddTo(&error, FROM_HERE, kErrorDomainOAuth2, - "unexpected_server_response", - "Access token unavailable"); + Error::AddTo(&error, FROM_HERE, kErrorDomainOAuth2, + "unexpected_server_response", "Access token unavailable"); error_callback->Run(error.get()); return; } @@ -430,7 +424,7 @@ const std::shared_ptr<base::Closure>& success_callback, const std::shared_ptr<CloudRequestErrorCallback>& error_callback, int id, - const chromeos::Error* error) { + const Error* error) { VLOG(1) << "Refresh access token request with ID " << id << " failed"; oauth2_backoff_entry_->InformOfRequest(false); RefreshAccessToken(*success_callback, *error_callback); @@ -491,7 +485,7 @@ } std::unique_ptr<base::DictionaryValue> -DeviceRegistrationInfo::BuildDeviceResource(chromeos::ErrorPtr* error) { +DeviceRegistrationInfo::BuildDeviceResource(ErrorPtr* error) { // Limit only to commands that are visible to the cloud. auto commands = command_manager_->GetCommandDictionary().GetCommandsAsJson( [](const CommandDefinition* def) { return def->GetVisibility().cloud; }, @@ -536,7 +530,7 @@ } std::string DeviceRegistrationInfo::RegisterDevice(const std::string& ticket_id, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<base::DictionaryValue> device_draft = BuildDeviceResource(error); if (!device_draft) @@ -585,9 +579,8 @@ !json_resp->GetString("robotAccountAuthorizationCode", &auth_code) || !json_resp->GetDictionary("deviceDraft", &device_draft_response) || !device_draft_response->GetString("id", &device_id)) { - chromeos::Error::AddTo(error, FROM_HERE, kErrorDomainGCD, - "unexpected_response", - "Device account missing in response"); + Error::AddTo(error, FROM_HERE, kErrorDomainGCD, "unexpected_response", + "Device account missing in response"); return std::string(); } @@ -614,9 +607,8 @@ !json_resp->GetString("refresh_token", &refresh_token) || !json_resp->GetInteger("expires_in", &expires_in) || access_token_.empty() || refresh_token.empty() || expires_in <= 0) { - chromeos::Error::AddTo(error, FROM_HERE, kErrorDomainGCD, - "unexpected_response", - "Device access_token missing in response"); + Error::AddTo(error, FROM_HERE, kErrorDomainGCD, "unexpected_response", + "Device access_token missing in response"); return std::string(); } @@ -665,7 +657,7 @@ VLOG(1) << "Sending cloud request '" << data->method << "' to '" << data->url << "' with request body '" << data->body << "'"; - chromeos::ErrorPtr error; + ErrorPtr error; if (!VerifyRegistrationCredentials(&error)) { data->error_callback.Run(error.get()); return; @@ -719,7 +711,7 @@ return; } - chromeos::ErrorPtr error; + ErrorPtr error; auto json_resp = ParseJsonResponse(response, &error); if (!json_resp) { data->error_callback.Run(error.get()); @@ -748,7 +740,7 @@ void DeviceRegistrationInfo::OnCloudRequestError( const std::shared_ptr<const CloudRequestData>& data, int request_id, - const chromeos::Error* error) { + const Error* error) { VLOG(1) << "Cloud request with ID " << request_id << " failed"; RetryCloudRequest(data); } @@ -768,13 +760,12 @@ void DeviceRegistrationInfo::OnAccessTokenError( const std::shared_ptr<const CloudRequestData>& data, - const chromeos::Error* error) { + const Error* error) { CheckAccessTokenError(error); data->error_callback.Run(error); } -void DeviceRegistrationInfo::CheckAccessTokenError( - const chromeos::Error* error) { +void DeviceRegistrationInfo::CheckAccessTokenError(const Error* error) { if (error->HasError(kErrorDomainOAuth2, "invalid_grant")) MarkDeviceUnregistered(); } @@ -816,7 +807,7 @@ bool DeviceRegistrationInfo::UpdateDeviceInfo(const std::string& name, const std::string& description, const std::string& location, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { BuffetConfig::Transaction change{config_.get()}; change.set_name(name); change.set_description(description); @@ -835,12 +826,11 @@ const std::string& anonymous_access_role, bool local_discovery_enabled, bool local_pairing_enabled, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { BuffetConfig::Transaction change(config_.get()); if (!change.set_local_anonymous_access_role(anonymous_access_role)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain, - "invalid_parameter", "Invalid role: %s", - anonymous_access_role.c_str()); + Error::AddToPrintf(error, FROM_HERE, kErrorDomain, "invalid_parameter", + "Invalid role: %s", anonymous_access_role.c_str()); return false; } @@ -856,10 +846,10 @@ const std::string& api_key, const std::string& oauth_url, const std::string& service_url, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { if (HaveRegistrationCredentials()) { - chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, "already_registered", - "Unable to change config for registered device"); + Error::AddTo(error, FROM_HERE, kErrorDomain, "already_registered", + "Unable to change config for registered device"); return false; } BuffetConfig::Transaction change{config_.get()}; @@ -883,7 +873,7 @@ } void DeviceRegistrationInfo::NotifyCommandAborted(const std::string& command_id, - chromeos::ErrorPtr error) { + ErrorPtr error) { base::DictionaryValue command_patch; command_patch.SetString(commands::attributes::kCommand_State, EnumToString(CommandStatus::kAborted)); @@ -891,7 +881,7 @@ command_patch.SetString(commands::attributes::kCommand_ErrorCode, Join(":", error->GetDomain(), error->GetCode())); std::vector<std::string> messages; - const chromeos::Error* current_error = error.get(); + const Error* current_error = error.get(); while (current_error) { messages.push_back(current_error->GetMessage()); current_error = current_error->GetInnerError(); @@ -940,7 +930,7 @@ queued_resource_update_callbacks_.clear(); VLOG(1) << "Updating GCD server with CDD..."; - chromeos::ErrorPtr error; + ErrorPtr error; std::unique_ptr<base::DictionaryValue> device_resource = BuildDeviceResource(&error); if (!device_resource) { @@ -991,8 +981,7 @@ StartQueuedUpdateDeviceResource(); } -void DeviceRegistrationInfo::OnUpdateDeviceResourceError( - const chromeos::Error* error) { +void DeviceRegistrationInfo::OnUpdateDeviceResourceError(const Error* error) { if (error->HasError(kErrorDomainGCDServer, "invalid_last_update_time_ms")) { // If the server rejected our previous request, retrieve the latest // timestamp from the server and retry. @@ -1093,7 +1082,7 @@ void DeviceRegistrationInfo::PublishCommand( const base::DictionaryValue& command) { std::string command_id; - chromeos::ErrorPtr error; + ErrorPtr error; auto command_instance = CommandInstance::FromJson( &command, CommandOrigin::kCloud, command_manager_->GetCommandDictionary(), &command_id, &error); @@ -1177,7 +1166,7 @@ PublishStateUpdates(); } -void DeviceRegistrationInfo::OnPublishStateError(const chromeos::Error* error) { +void DeviceRegistrationInfo::OnPublishStateError(const Error* error) { LOG(ERROR) << "Permanent failure while trying to update device state"; device_state_update_pending_ = false; }
diff --git a/libweave/src/device_registration_info.h b/libweave/src/device_registration_info.h index e0515a9..1dcc41b 100644 --- a/libweave/src/device_registration_info.h +++ b/libweave/src/device_registration_info.h
@@ -18,7 +18,7 @@ #include <base/single_thread_task_runner.h> #include <base/time/time.h> #include <base/timer/timer.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include <weave/cloud.h> #include <weave/config.h> #include <weave/http_client.h> @@ -59,8 +59,7 @@ public: using CloudRequestCallback = base::Callback<void(const base::DictionaryValue& response)>; - using CloudRequestErrorCallback = - base::Callback<void(const chromeos::Error* error)>; + using CloudRequestErrorCallback = base::Callback<void(const Error* error)>; DeviceRegistrationInfo(const std::shared_ptr<CommandManager>& command_manager, const std::shared_ptr<StateManager>& state_manager, @@ -79,21 +78,21 @@ const OnCloudRequestCallback& success_callback, const OnCloudRequestErrorCallback& error_callback) override; std::string RegisterDevice(const std::string& ticket_id, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; bool UpdateDeviceInfo(const std::string& name, const std::string& description, const std::string& location, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; bool UpdateBaseConfig(const std::string& anonymous_access_role, bool local_discovery_enabled, bool local_pairing_enabled, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; bool UpdateServiceConfig(const std::string& client_id, const std::string& client_secret, const std::string& api_key, const std::string& oauth_url, const std::string& service_url, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; // Add callback to listen for changes in config. void AddOnConfigChangedCallback(const Config::OnChangedCallback& callback); @@ -129,7 +128,7 @@ bool HaveRegistrationCredentials() const; // Calls HaveRegistrationCredentials() and logs an error if no credentials // are available. - bool VerifyRegistrationCredentials(chromeos::ErrorPtr* error) const; + bool VerifyRegistrationCredentials(ErrorPtr* error) const; // Updates a command (override from CloudCommandUpdateInterface). void UpdateCommand(const std::string& command_id, @@ -173,13 +172,13 @@ const std::shared_ptr<base::Closure>& success_callback, const std::shared_ptr<CloudRequestErrorCallback>& error_callback, int id, - const chromeos::Error* error); + const Error* error); // Parse the OAuth response, and sets registration status to // kInvalidCredentials if our registration is no longer valid. std::unique_ptr<base::DictionaryValue> ParseOAuthResponse( const HttpClient::Response& response, - chromeos::ErrorPtr* error); + ErrorPtr* error); // This attempts to open a notification channel. The channel needs to be // restarted anytime the access_token is refreshed. @@ -211,21 +210,20 @@ const HttpClient::Response& response); void OnCloudRequestError(const std::shared_ptr<const CloudRequestData>& data, int request_id, - const chromeos::Error* error); + const Error* error); void RetryCloudRequest(const std::shared_ptr<const CloudRequestData>& data); void OnAccessTokenRefreshed( const std::shared_ptr<const CloudRequestData>& data); - void OnAccessTokenError( - const std::shared_ptr<const CloudRequestData>& data, - const chromeos::Error* error); - void CheckAccessTokenError(const chromeos::Error* error); + void OnAccessTokenError(const std::shared_ptr<const CloudRequestData>& data, + const Error* error); + void CheckAccessTokenError(const Error* error); void UpdateDeviceResource(const base::Closure& on_success, const CloudRequestErrorCallback& on_failure); void StartQueuedUpdateDeviceResource(); // Success/failure callbacks for UpdateDeviceResource(). void OnUpdateDeviceResourceSuccess(const base::DictionaryValue& device_info); - void OnUpdateDeviceResourceError(const chromeos::Error* error); + void OnUpdateDeviceResourceError(const Error* error); // Callback from GetDeviceInfo() to retrieve the device resource timestamp // and retry UpdateDeviceResource() call. @@ -256,18 +254,16 @@ void PublishStateUpdates(); void OnPublishStateSuccess(StateChangeQueueInterface::UpdateID update_id, const base::DictionaryValue& reply); - void OnPublishStateError(const chromeos::Error* error); + void OnPublishStateError(const Error* error); // If unrecoverable error occurred (e.g. error parsing command instance), // notify the server that the command is aborted by the device. - void NotifyCommandAborted(const std::string& command_id, - chromeos::ErrorPtr error); + void NotifyCommandAborted(const std::string& command_id, ErrorPtr error); // Builds Cloud API devices collection REST resource which matches // current state of the device including command definitions // for all supported commands and current device state. - std::unique_ptr<base::DictionaryValue> BuildDeviceResource( - chromeos::ErrorPtr* error); + std::unique_ptr<base::DictionaryValue> BuildDeviceResource(ErrorPtr* error); void SetRegistrationStatus(RegistrationStatus new_status); void SetDeviceId(const std::string& device_id);
diff --git a/libweave/src/device_registration_info_unittest.cc b/libweave/src/device_registration_info_unittest.cc index 75c812b..c73b55a 100644 --- a/libweave/src/device_registration_info_unittest.cc +++ b/libweave/src/device_registration_info_unittest.cc
@@ -159,10 +159,10 @@ return dev_reg_->PublishCommands(commands); } - bool RefreshAccessToken(chromeos::ErrorPtr* error) const { + bool RefreshAccessToken(ErrorPtr* error) const { bool succeeded = false; auto on_success = [&succeeded]() { succeeded = true; }; - auto on_failure = [&error](const chromeos::Error* in_error) { + auto on_failure = [&error](const Error* in_error) { if (error) *error = in_error->Clone(); }; @@ -271,7 +271,7 @@ return ReplyWithJson(400, json); }))); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE(RefreshAccessToken(&error)); EXPECT_TRUE(error->HasError(kErrorDomainOAuth2, "unable_to_authenticate")); EXPECT_EQ(RegistrationStatus::kConnecting, GetRegistrationStatus()); @@ -299,7 +299,7 @@ return ReplyWithJson(400, json); }))); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE(RefreshAccessToken(&error)); EXPECT_TRUE(error->HasError(kErrorDomainOAuth2, "invalid_grant")); EXPECT_EQ(RegistrationStatus::kInvalidCredentials, GetRegistrationStatus()); @@ -331,7 +331,7 @@ EXPECT_EQ(test_data::kDeviceId, id); succeeded = true; }; - auto on_failure = [](const chromeos::Error* error) { + auto on_failure = [](const Error* error) { FAIL() << "Should not be called"; }; dev_reg_->GetDeviceInfo(base::Bind(on_success), base::Bind(on_failure));
diff --git a/libweave/src/error.cc b/libweave/src/error.cc new file mode 100644 index 0000000..92ee42e --- /dev/null +++ b/libweave/src/error.cc
@@ -0,0 +1,135 @@ +// Copyright 2014 The Chromium OS Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <weave/error.h> + +#include <base/logging.h> +#include <base/strings/stringprintf.h> + +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 + // the current error location with the location passed in to the Error object. + // This way the log will contain the actual location of the error, and not + // as if it always comes from chromeos/errors/error.cc(22). + logging::LogMessage(location.file_name(), location.line_number(), + logging::LOG_ERROR) + .stream() + << location.function_name() << "(...): " + << "Domain=" << domain << ", 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()); +} + +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))); +} + +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)); + } else { + // Create already logs the error, but if |error| is nullptr, + // we still want to log the error... + LogError(location, domain, code, message); + } +} + +void Error::AddToPrintf(ErrorPtr* error, + const tracked_objects::Location& location, + const std::string& domain, + const std::string& code, + const char* format, + ...) { + va_list ap; + va_start(ap, format); + std::string message = base::StringPrintV(format, ap); + va_end(ap); + AddTo(error, location, domain, 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; +} + +bool Error::HasError(const std::string& domain, const std::string& code) const { + return FindError(this, domain, code) != nullptr; +} + +const Error* Error::GetFirstError() const { + const Error* err = this; + while (err->GetInnerError()) + err = err->GetInnerError(); + return err; +} + +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, + 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), + 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) + break; + error_chain_start = error_chain_start->GetInnerError(); + } + return error_chain_start; +} + +} // namespace weave
diff --git a/libweave/src/error_unittest.cc b/libweave/src/error_unittest.cc new file mode 100644 index 0000000..36028fb --- /dev/null +++ b/libweave/src/error_unittest.cc
@@ -0,0 +1,83 @@ +// Copyright 2014 The Chromium OS Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <weave/error.h> + +#include <gtest/gtest.h> + +namespace weave { + +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"); +} + +ErrorPtr GenerateHttpError() { + ErrorPtr inner = GenerateNetworkError(); + return Error::Create(FROM_HERE, "HTTP", "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")); +} + +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")); +} + +TEST(Error, Clone) { + ErrorPtr err = GenerateHttpError(); + ErrorPtr clone = err->Clone(); + const Error* error1 = err.get(); + 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, + error2->GetLocation().function_name); + EXPECT_EQ(error1->GetLocation().file_name, error2->GetLocation().file_name); + EXPECT_EQ(error1->GetLocation().line_number, + error2->GetLocation().line_number); + error1 = error1->GetInnerError(); + error2 = error2->GetInnerError(); + } + EXPECT_EQ(error1, error2); +} + +} // namespace weave
diff --git a/libweave/src/mock_http_client.cc b/libweave/src/mock_http_client.cc index 1f223a9..a1d7160 100644 --- a/libweave/src/mock_http_client.cc +++ b/libweave/src/mock_http_client.cc
@@ -15,7 +15,7 @@ const std::string& url, const Headers& headers, const std::string& data, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { return std::unique_ptr<Response>{ MockSendRequest(method, url, headers, data, error)}; } @@ -26,7 +26,7 @@ const std::string& data, const SuccessCallback& success_callback, const ErrorCallback& error_callback) { - chromeos::ErrorPtr error; + ErrorPtr error; std::unique_ptr<Response> response{ MockSendRequest(method, url, headers, data, &error)}; if (response) {
diff --git a/libweave/src/notification/pull_channel.cc b/libweave/src/notification/pull_channel.cc index d358e95..2342e7d 100644 --- a/libweave/src/notification/pull_channel.cc +++ b/libweave/src/notification/pull_channel.cc
@@ -5,6 +5,7 @@ #include "libweave/src/notification/pull_channel.h" #include <base/bind.h> +#include <base/location.h> #include <weave/task_runner.h> #include "libweave/src/notification/notification_delegate.h"
diff --git a/libweave/src/notification/xmpp_channel.cc b/libweave/src/notification/xmpp_channel.cc index de0ba44..90d35d2 100644 --- a/libweave/src/notification/xmpp_channel.cc +++ b/libweave/src/notification/xmpp_channel.cc
@@ -307,7 +307,7 @@ RestartXmppStream(); } -void XmppChannel::OnTlsError(const chromeos::Error* error) { +void XmppChannel::OnTlsError(const Error* error) { LOG(ERROR) << "TLS handshake failed. Restarting XMPP connection"; Restart(); } @@ -320,7 +320,7 @@ } write_socket_data_ = queued_write_data_ + message; queued_write_data_.clear(); - chromeos::ErrorPtr error; + ErrorPtr error; VLOG(2) << "Sending XMPP message: " << message; write_pending_ = true; @@ -335,7 +335,7 @@ } void XmppChannel::OnMessageSent() { - chromeos::ErrorPtr error; + ErrorPtr error; write_pending_ = false; if (!stream_->FlushBlocking(&error)) { OnWriteError(error.get()); @@ -352,7 +352,7 @@ if (read_pending_ || !stream_) return; - chromeos::ErrorPtr error; + ErrorPtr error; read_pending_ = true; bool ok = stream_->ReadAsync( read_socket_data_.data(), read_socket_data_.size(), @@ -364,12 +364,12 @@ OnReadError(error.get()); } -void XmppChannel::OnReadError(const chromeos::Error* error) { +void XmppChannel::OnReadError(const Error* error) { read_pending_ = false; Restart(); } -void XmppChannel::OnWriteError(const chromeos::Error* error) { +void XmppChannel::OnWriteError(const Error* error) { write_pending_ = false; Restart(); }
diff --git a/libweave/src/notification/xmpp_channel.h b/libweave/src/notification/xmpp_channel.h index 2f26748..112799f 100644 --- a/libweave/src/notification/xmpp_channel.h +++ b/libweave/src/notification/xmpp_channel.h
@@ -105,15 +105,15 @@ void StartTlsHandshake(); void OnTlsHandshakeComplete(std::unique_ptr<Stream> tls_stream); - void OnTlsError(const chromeos::Error* error); + void OnTlsError(const Error* error); void WaitForMessage(); void OnConnected(); void OnMessageRead(size_t size); void OnMessageSent(); - void OnReadError(const chromeos::Error* error); - void OnWriteError(const chromeos::Error* error); + void OnReadError(const Error* error); + void OnWriteError(const Error* error); void Restart(); void CloseStream();
diff --git a/libweave/src/notification/xmpp_channel_unittest.cc b/libweave/src/notification/xmpp_channel_unittest.cc index 5a1b86d..1816288 100644 --- a/libweave/src/notification/xmpp_channel_unittest.cc +++ b/libweave/src/notification/xmpp_channel_unittest.cc
@@ -85,9 +85,9 @@ public: explicit FakeStream(TaskRunner* task_runner) : task_runner_{task_runner} {} - bool FlushBlocking(chromeos::ErrorPtr* error) override { return true; } + bool FlushBlocking(ErrorPtr* error) override { return true; } - bool CloseBlocking(chromeos::ErrorPtr* error) override { return true; } + bool CloseBlocking(ErrorPtr* error) override { return true; } void CancelPendingAsyncOperations() override {} @@ -99,12 +99,11 @@ read_data_ += data; } - bool ReadAsync( - void* buffer, - size_t size_to_read, - const base::Callback<void(size_t)>& success_callback, - const base::Callback<void(const chromeos::Error*)>& error_callback, - chromeos::ErrorPtr* error) override { + bool ReadAsync(void* buffer, + size_t size_to_read, + const base::Callback<void(size_t)>& success_callback, + const base::Callback<void(const Error*)>& error_callback, + ErrorPtr* error) override { size_t size = std::min(size_to_read, read_data_.size()); memcpy(buffer, read_data_.data(), size); read_data_ = read_data_.substr(size); @@ -113,12 +112,11 @@ return true; } - bool WriteAllAsync( - const void* buffer, - size_t size_to_write, - const base::Closure& success_callback, - const base::Callback<void(const chromeos::Error*)>& error_callback, - chromeos::ErrorPtr* error) override { + bool WriteAllAsync(const void* buffer, + size_t size_to_write, + const base::Closure& success_callback, + const base::Callback<void(const Error*)>& error_callback, + ErrorPtr* error) override { size_t size = std::min(size_to_write, write_data_.size()); EXPECT_EQ( write_data_.substr(0, size),
diff --git a/libweave/src/privet/cloud_delegate.cc b/libweave/src/privet/cloud_delegate.cc index f2cbdbf..3a2a249 100644 --- a/libweave/src/privet/cloud_delegate.cc +++ b/libweave/src/privet/cloud_delegate.cc
@@ -11,7 +11,7 @@ #include <base/logging.h> #include <base/memory/weak_ptr.h> #include <base/values.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include <weave/task_runner.h> #include "libweave/src/buffet_config.h" @@ -20,8 +20,6 @@ #include "libweave/src/privet/constants.h" #include "libweave/src/states/state_manager.h" -using chromeos::ErrorPtr; - namespace weave { namespace privet { @@ -30,11 +28,9 @@ const int kMaxSetupRetries = 5; const int kFirstRetryTimeoutSec = 1; -Command* ReturnNotFound(const std::string& command_id, - chromeos::ErrorPtr* error) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::kDomain, - errors::kNotFound, "Command not found, ID='%s'", - command_id.c_str()); +Command* ReturnNotFound(const std::string& command_id, ErrorPtr* error) { + Error::AddToPrintf(error, FROM_HERE, errors::kDomain, errors::kNotFound, + "Command not found, ID='%s'", command_id.c_str()); return nullptr; } @@ -66,18 +62,18 @@ ~CloudDelegateImpl() override = default; - bool GetModelId(std::string* id, chromeos::ErrorPtr* error) const override { + bool GetModelId(std::string* id, ErrorPtr* error) const override { if (device_->GetConfig().model_id().size() != 5) { - chromeos::Error::AddToPrintf( - error, FROM_HERE, errors::kDomain, errors::kInvalidState, - "Model ID is invalid: %s", device_->GetConfig().model_id().c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::kDomain, + errors::kInvalidState, "Model ID is invalid: %s", + device_->GetConfig().model_id().c_str()); return false; } *id = device_->GetConfig().model_id(); return true; } - bool GetName(std::string* name, chromeos::ErrorPtr* error) const override { + bool GetName(std::string* name, ErrorPtr* error) const override { *name = device_->GetConfig().name(); return true; } @@ -95,7 +91,7 @@ const std::string& location, const base::Closure& success_callback, const ErrorCallback& error_callback) override { - chromeos::ErrorPtr error; + ErrorPtr error; if (!device_->UpdateDeviceInfo(name, description, location, &error)) return error_callback.Run(error.get()); success_callback.Run(); @@ -135,10 +131,10 @@ bool Setup(const std::string& ticket_id, const std::string& user, - chromeos::ErrorPtr* error) override { + ErrorPtr* error) override { if (setup_state_.IsStatusEqual(SetupState::kInProgress)) { - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, - errors::kDeviceBusy, "Setup in progress"); + Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kDeviceBusy, + "Setup in progress"); return false; } VLOG(1) << "GCD Setup started. ticket_id: " << ticket_id @@ -170,13 +166,13 @@ CHECK(user_info.scope() != AuthScope::kNone); CHECK_NE(user_info.user_id(), 0u); - chromeos::ErrorPtr error; + ErrorPtr error; UserRole role; std::string str_scope = EnumToString(user_info.scope()); if (!StringToEnum(str_scope, &role)) { - chromeos::Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, - errors::kInvalidParams, "Invalid role: '%s'", - str_scope.c_str()); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidParams, "Invalid role: '%s'", + str_scope.c_str()); return error_callback.Run(error.get()); } @@ -193,7 +189,7 @@ const SuccessCallback& success_callback, const ErrorCallback& error_callback) override { CHECK(user_info.scope() != AuthScope::kNone); - chromeos::ErrorPtr error; + ErrorPtr error; auto command = GetCommandInternal(id, user_info, &error); if (!command) return error_callback.Run(error.get()); @@ -205,7 +201,7 @@ const SuccessCallback& success_callback, const ErrorCallback& error_callback) override { CHECK(user_info.scope() != AuthScope::kNone); - chromeos::ErrorPtr error; + ErrorPtr error; auto command = GetCommandInternal(id, user_info, &error); if (!command) return error_callback.Run(error.get()); @@ -255,8 +251,8 @@ } else if (status == RegistrationStatus::kConnected) { connection_state_ = ConnectionState{ConnectionState::kOnline}; } else { - chromeos::ErrorPtr error; - chromeos::Error::AddToPrintf( + ErrorPtr error; + Error::AddToPrintf( &error, FROM_HERE, errors::kDomain, errors::kInvalidState, "Unexpected registration status: %s", EnumToString(status).c_str()); connection_state_ = ConnectionState{std::move(error)}; @@ -282,14 +278,11 @@ NotifyOnCommandDefsChanged(); } - void RetryRegister(const std::string& ticket_id, - int retries, - chromeos::Error* error) { + void RetryRegister(const std::string& ticket_id, int retries, Error* error) { if (retries >= kMaxSetupRetries) { - chromeos::ErrorPtr new_error{error ? error->Clone() : nullptr}; - chromeos::Error::AddTo(&new_error, FROM_HERE, errors::kDomain, - errors::kInvalidState, - "Failed to register device"); + ErrorPtr new_error{error ? error->Clone() : nullptr}; + Error::AddTo(&new_error, FROM_HERE, errors::kDomain, + errors::kInvalidState, "Failed to register device"); setup_state_ = SetupState{std::move(new_error)}; return; } @@ -306,7 +299,7 @@ } void CallManagerRegisterDevice(const std::string& ticket_id, int retries) { - chromeos::ErrorPtr error; + ErrorPtr error; if (device_->RegisterDevice(ticket_id, &error).empty()) return RetryRegister(ticket_id, retries, error.get()); setup_state_ = SetupState(SetupState::kSuccess); @@ -314,7 +307,7 @@ Command* GetCommandInternal(const std::string& command_id, const UserInfo& user_info, - chromeos::ErrorPtr* error) const { + ErrorPtr* error) const { if (user_info.scope() != AuthScope::kOwner) { auto it = command_owners_.find(command_id); if (it == command_owners_.end()) @@ -332,7 +325,7 @@ bool CanAccessCommand(uint64_t owner_id, const UserInfo& user_info, - chromeos::ErrorPtr* error) const { + ErrorPtr* error) const { CHECK(user_info.scope() != AuthScope::kNone); CHECK_NE(user_info.user_id(), 0u); @@ -341,9 +334,8 @@ return true; } - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, - errors::kAccessDenied, - "Need to be owner of the command."); + Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kAccessDenied, + "Need to be owner of the command."); return false; }
diff --git a/libweave/src/privet/cloud_delegate.h b/libweave/src/privet/cloud_delegate.h index 3b80b2e..5f79a6d 100644 --- a/libweave/src/privet/cloud_delegate.h +++ b/libweave/src/privet/cloud_delegate.h
@@ -37,7 +37,7 @@ virtual ~CloudDelegate(); using SuccessCallback = base::Callback<void(const base::DictionaryValue&)>; - using ErrorCallback = base::Callback<void(chromeos::Error*)>; + using ErrorCallback = base::Callback<void(Error*)>; class Observer { public: @@ -49,10 +49,10 @@ }; // Returns the model ID of the device. - virtual bool GetModelId(std::string* id, chromeos::ErrorPtr* error) const = 0; + virtual bool GetModelId(std::string* id, ErrorPtr* error) const = 0; // Returns the name of device. - virtual bool GetName(std::string* name, chromeos::ErrorPtr* error) const = 0; + virtual bool GetName(std::string* name, ErrorPtr* error) const = 0; // Returns the description of the device. virtual std::string GetDescription() const = 0; @@ -89,7 +89,7 @@ // Starts GCD setup. virtual bool Setup(const std::string& ticket_id, const std::string& user, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; // Returns cloud id if the registered device or empty string if unregistered. virtual std::string GetCloudId() const = 0;
diff --git a/libweave/src/privet/mock_delegates.h b/libweave/src/privet/mock_delegates.h index 3696276..94686c3 100644 --- a/libweave/src/privet/mock_delegates.h +++ b/libweave/src/privet/mock_delegates.h
@@ -68,19 +68,16 @@ MOCK_CONST_METHOD0(GetPairingTypes, std::set<PairingType>()); MOCK_CONST_METHOD0(GetCryptoTypes, std::set<CryptoType>()); MOCK_CONST_METHOD1(IsValidPairingCode, bool(const std::string&)); - MOCK_METHOD5(StartPairing, - bool(PairingType, - CryptoType, - std::string*, - std::string*, - chromeos::ErrorPtr*)); + MOCK_METHOD5( + StartPairing, + bool(PairingType, CryptoType, std::string*, std::string*, ErrorPtr*)); MOCK_METHOD5(ConfirmPairing, bool(const std::string&, const std::string&, std::string*, std::string*, - chromeos::ErrorPtr*)); - MOCK_METHOD2(CancelPairing, bool(const std::string&, chromeos::ErrorPtr*)); + ErrorPtr*)); + MOCK_METHOD2(CancelPairing, bool(const std::string&, ErrorPtr*)); MockSecurityDelegate() { EXPECT_CALL(*this, CreateAccessToken(_, _)) @@ -120,9 +117,7 @@ MOCK_CONST_METHOD0(GetConnectionState, const ConnectionState&()); MOCK_CONST_METHOD0(GetSetupState, const SetupState&()); MOCK_METHOD3(ConfigureCredentials, - bool(const std::string&, - const std::string&, - chromeos::ErrorPtr*)); + bool(const std::string&, const std::string&, ErrorPtr*)); MOCK_CONST_METHOD0(GetCurrentlyConnectedSsid, std::string()); MOCK_CONST_METHOD0(GetHostedSsid, std::string()); MOCK_CONST_METHOD0(GetTypes, std::set<WifiType>()); @@ -144,8 +139,8 @@ class MockCloudDelegate : public CloudDelegate { public: - MOCK_CONST_METHOD2(GetModelId, bool(std::string*, chromeos::ErrorPtr*)); - MOCK_CONST_METHOD2(GetName, bool(std::string*, chromeos::ErrorPtr*)); + MOCK_CONST_METHOD2(GetModelId, bool(std::string*, ErrorPtr*)); + MOCK_CONST_METHOD2(GetName, bool(std::string*, ErrorPtr*)); MOCK_CONST_METHOD0(GetDescription, std::string()); MOCK_CONST_METHOD0(GetLocation, std::string()); MOCK_METHOD5(UpdateDeviceInfo, @@ -160,10 +155,7 @@ MOCK_CONST_METHOD0(GetAnonymousMaxScope, AuthScope()); MOCK_CONST_METHOD0(GetConnectionState, const ConnectionState&()); MOCK_CONST_METHOD0(GetSetupState, const SetupState&()); - MOCK_METHOD3(Setup, - bool(const std::string&, - const std::string&, - chromeos::ErrorPtr*)); + MOCK_METHOD3(Setup, bool(const std::string&, const std::string&, ErrorPtr*)); MOCK_CONST_METHOD0(GetCloudId, std::string()); MOCK_CONST_METHOD0(GetState, const base::DictionaryValue&()); MOCK_CONST_METHOD0(GetCommandDef, const base::DictionaryValue&());
diff --git a/libweave/src/privet/privet_handler.cc b/libweave/src/privet/privet_handler.cc index 9f22750..b83df36 100644 --- a/libweave/src/privet/privet_handler.cc +++ b/libweave/src/privet/privet_handler.cc
@@ -158,8 +158,7 @@ return SplitAtFirst(auth_header, " ", true).second; } -std::unique_ptr<base::DictionaryValue> ErrorInfoToJson( - const chromeos::Error& error) { +std::unique_ptr<base::DictionaryValue> ErrorInfoToJson(const Error& error) { std::unique_ptr<base::DictionaryValue> output{new base::DictionaryValue}; output->SetString(kErrorMessageKey, error.GetMessage()); output->SetString(kErrorCodeKey, error.GetCode()); @@ -167,13 +166,12 @@ } // Creates JSON similar to GCD server error format. -std::unique_ptr<base::DictionaryValue> ErrorToJson( - const chromeos::Error& error) { +std::unique_ptr<base::DictionaryValue> ErrorToJson(const Error& error) { std::unique_ptr<base::DictionaryValue> output{ErrorInfoToJson(error)}; // Optional debug information. std::unique_ptr<base::ListValue> errors{new base::ListValue}; - for (const chromeos::Error* it = &error; it; it = it->GetInnerError()) { + for (const Error* it = &error; it; it = it->GetInnerError()) { std::unique_ptr<base::DictionaryValue> inner{ErrorInfoToJson(*it)}; tracked_objects::Location location{it->GetLocation().function_name.c_str(), it->GetLocation().file_name.c_str(), @@ -196,7 +194,7 @@ parent->Set(kErrorKey, ErrorToJson(*state.error()).release()); } -void ReturnError(const chromeos::Error& error, +void ReturnError(const Error& error, const PrivetHandler::RequestCallback& callback) { int code = http::kInternalServerError; for (const auto& it : kReasonToCode) { @@ -216,17 +214,17 @@ } void OnCommandRequestFailed(const PrivetHandler::RequestCallback& callback, - chromeos::Error* error) { + Error* error) { if (error->HasError("gcd", "unknown_command")) { - chromeos::ErrorPtr new_error = error->Clone(); - chromeos::Error::AddTo(&new_error, FROM_HERE, errors::kDomain, - errors::kNotFound, "Unknown command ID"); + ErrorPtr new_error = error->Clone(); + Error::AddTo(&new_error, FROM_HERE, errors::kDomain, errors::kNotFound, + "Unknown command ID"); return ReturnError(*new_error, callback); } if (error->HasError("gcd", "access_denied")) { - chromeos::ErrorPtr new_error = error->Clone(); - chromeos::Error::AddTo(&new_error, FROM_HERE, errors::kDomain, - errors::kAccessDenied, error->GetMessage()); + ErrorPtr new_error = error->Clone(); + Error::AddTo(&new_error, FROM_HERE, errors::kDomain, errors::kAccessDenied, + error->GetMessage()); return ReturnError(*new_error, callback); } return ReturnError(*error, callback); @@ -412,29 +410,29 @@ const std::string& auth_header, const base::DictionaryValue* input, const RequestCallback& callback) { - chromeos::ErrorPtr error; + ErrorPtr error; if (!input) { - chromeos::Error::AddTo(&error, FROM_HERE, errors::kDomain, - errors::kInvalidFormat, "Malformed JSON"); + Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kInvalidFormat, + "Malformed JSON"); return ReturnError(*error, callback); } auto handler = handlers_.find(api); if (handler == handlers_.end()) { - chromeos::Error::AddTo(&error, FROM_HERE, errors::kDomain, - errors::kNotFound, "Path not found"); + Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kNotFound, + "Path not found"); return ReturnError(*error, callback); } if (auth_header.empty()) { - chromeos::Error::AddTo(&error, FROM_HERE, errors::kDomain, - errors::kMissingAuthorization, - "Authorization header must not be empty"); + Error::AddTo(&error, FROM_HERE, errors::kDomain, + errors::kMissingAuthorization, + "Authorization header must not be empty"); return ReturnError(*error, callback); } std::string token = GetAuthTokenFromAuthHeader(auth_header); if (token.empty()) { - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidAuthorization, - "Invalid authorization header: %s", auth_header.c_str()); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidAuthorization, + "Invalid authorization header: %s", auth_header.c_str()); return ReturnError(*error, callback); } UserInfo user_info; @@ -442,27 +440,27 @@ base::Time time; user_info = security_->ParseAccessToken(token, &time); if (user_info.scope() == AuthScope::kNone) { - chromeos::Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, - errors::kInvalidAuthorization, - "Invalid access token: %s", token.c_str()); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidAuthorization, + "Invalid access token: %s", token.c_str()); return ReturnError(*error, callback); } time += base::TimeDelta::FromSeconds(kAccessTokenExpirationSeconds); time += base::TimeDelta::FromSeconds(kAccessTokenExpirationThresholdSeconds); if (time < base::Time::Now()) { - chromeos::Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, - errors::kAuthorizationExpired, - "Token expired: %s", token.c_str()); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kAuthorizationExpired, "Token expired: %s", + token.c_str()); return ReturnError(*error, callback); } } if (handler->second.first > user_info.scope()) { - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidAuthorizationScope, - "Scope '%s' does not allow '%s'", - EnumToString(user_info.scope()).c_str(), api.c_str()); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidAuthorizationScope, + "Scope '%s' does not allow '%s'", + EnumToString(user_info.scope()).c_str(), api.c_str()); return ReturnError(*error, callback); } (this->*handler->second.second)(*input, user_info, callback); @@ -479,7 +477,7 @@ const RequestCallback& callback) { base::DictionaryValue output; - chromeos::ErrorPtr error; + ErrorPtr error; std::string name; std::string model_id; @@ -525,7 +523,7 @@ void PrivetHandler::HandlePairingStart(const base::DictionaryValue& input, const UserInfo& user_info, const RequestCallback& callback) { - chromeos::ErrorPtr error; + ErrorPtr error; std::string pairing_str; input.GetString(kPairingKey, &pairing_str); @@ -536,18 +534,18 @@ PairingType pairing; std::set<PairingType> modes = security_->GetPairingTypes(); if (!StringToEnum(pairing_str, &pairing) || !ContainsKey(modes, pairing)) { - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidParams, - kInvalidParamValueFormat, kPairingKey, pairing_str.c_str()); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidParams, kInvalidParamValueFormat, + kPairingKey, pairing_str.c_str()); return ReturnError(*error, callback); } CryptoType crypto; std::set<CryptoType> cryptos = security_->GetCryptoTypes(); if (!StringToEnum(crypto_str, &crypto) || !ContainsKey(cryptos, crypto)) { - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidParams, - kInvalidParamValueFormat, kCryptoKey, crypto_str.c_str()); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidParams, kInvalidParamValueFormat, + kCryptoKey, crypto_str.c_str()); return ReturnError(*error, callback); } @@ -573,7 +571,7 @@ std::string fingerprint; std::string signature; - chromeos::ErrorPtr error; + ErrorPtr error; if (!security_->ConfirmPairing(id, commitment, &fingerprint, &signature, &error)) { return ReturnError(*error, callback); @@ -591,7 +589,7 @@ std::string id; input.GetString(kPairingSessionIdKey, &id); - chromeos::ErrorPtr error; + ErrorPtr error; if (!security_->CancelPairing(id, &error)) return ReturnError(*error, callback); @@ -602,7 +600,7 @@ void PrivetHandler::HandleAuth(const base::DictionaryValue& input, const UserInfo& user_info, const RequestCallback& callback) { - chromeos::ErrorPtr error; + ErrorPtr error; std::string auth_code_type; input.GetString(kAuthModeKey, &auth_code_type); @@ -615,16 +613,16 @@ max_auth_scope = GetAnonymousMaxScope(*cloud_, wifi_); } else if (auth_code_type == kAuthTypePairingValue) { if (!security_->IsValidPairingCode(auth_code)) { - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidAuthCode, - kInvalidParamValueFormat, kAuthCodeKey, auth_code.c_str()); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidAuthCode, kInvalidParamValueFormat, + kAuthCodeKey, auth_code.c_str()); return ReturnError(*error, callback); } max_auth_scope = AuthScope::kOwner; } else { - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidAuthMode, - kInvalidParamValueFormat, kAuthModeKey, auth_code_type.c_str()); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidAuthMode, kInvalidParamValueFormat, + kAuthModeKey, auth_code_type.c_str()); return ReturnError(*error, callback); } @@ -634,18 +632,16 @@ AuthScope requested_auth_scope = AuthScopeFromString(requested_scope, max_auth_scope); if (requested_auth_scope == AuthScope::kNone) { - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidRequestedScope, - kInvalidParamValueFormat, kAuthRequestedScopeKey, - requested_scope.c_str()); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidRequestedScope, kInvalidParamValueFormat, + kAuthRequestedScopeKey, requested_scope.c_str()); return ReturnError(*error, callback); } if (requested_auth_scope > max_auth_scope) { - chromeos::Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, - errors::kAccessDenied, - "Scope '%s' is not allowed", - EnumToString(requested_auth_scope).c_str()); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kAccessDenied, "Scope '%s' is not allowed", + EnumToString(requested_auth_scope).c_str()); return ReturnError(*error, callback); } @@ -664,7 +660,7 @@ const UserInfo& user_info, const RequestCallback& callback) { std::string name; - chromeos::ErrorPtr error; + ErrorPtr error; if (!cloud_->GetName(&name, &error)) return ReturnError(*error, callback); input.GetString(kNameKey, &name); @@ -683,16 +679,15 @@ const base::DictionaryValue* wifi = nullptr; if (input.GetDictionary(kWifiKey, &wifi)) { if (!wifi_ || wifi_->GetTypes().empty()) { - chromeos::Error::AddTo(&error, FROM_HERE, errors::kDomain, - errors::kSetupUnavailable, - "WiFi setup unavailible"); + Error::AddTo(&error, FROM_HERE, errors::kDomain, + errors::kSetupUnavailable, "WiFi setup unavailible"); return ReturnError(*error, callback); } wifi->GetString(kSetupStartSsidKey, &ssid); if (ssid.empty()) { - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidParams, - kInvalidParamValueFormat, kSetupStartSsidKey, ""); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidParams, kInvalidParamValueFormat, + kSetupStartSsidKey, ""); return ReturnError(*error, callback); } wifi->GetString(kSetupStartPassKey, &passphrase); @@ -702,9 +697,9 @@ if (input.GetDictionary(kGcdKey, ®istration)) { registration->GetString(kSetupStartTicketIdKey, &ticket); if (ticket.empty()) { - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidParams, - kInvalidParamValueFormat, kSetupStartTicketIdKey, ""); + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidParams, kInvalidParamValueFormat, + kSetupStartTicketIdKey, ""); return ReturnError(*error, callback); } registration->GetString(kSetupStartUserKey, &user); @@ -723,7 +718,7 @@ const std::string& ticket, const std::string& user, const RequestCallback& callback) const { - chromeos::ErrorPtr error; + ErrorPtr error; if (!ssid.empty() && !wifi_->ConfigureCredentials(ssid, passphrase, &error)) return ReturnError(*error, callback); @@ -803,10 +798,10 @@ const RequestCallback& callback) { std::string id; if (!input.GetString(kCommandsIdKey, &id)) { - chromeos::ErrorPtr error; - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidParams, - kInvalidParamValueFormat, kCommandsIdKey, id.c_str()); + ErrorPtr error; + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidParams, kInvalidParamValueFormat, + kCommandsIdKey, id.c_str()); return ReturnError(*error, callback); } cloud_->GetCommand(id, user_info, @@ -827,10 +822,10 @@ const RequestCallback& callback) { std::string id; if (!input.GetString(kCommandsIdKey, &id)) { - chromeos::ErrorPtr error; - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidParams, - kInvalidParamValueFormat, kCommandsIdKey, id.c_str()); + ErrorPtr error; + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, + errors::kInvalidParams, kInvalidParamValueFormat, + kCommandsIdKey, id.c_str()); return ReturnError(*error, callback); } cloud_->CancelCommand(id, user_info,
diff --git a/libweave/src/privet/privet_handler_unittest.cc b/libweave/src/privet/privet_handler_unittest.cc index 240da55..2980115 100644 --- a/libweave/src/privet/privet_handler_unittest.cc +++ b/libweave/src/privet/privet_handler_unittest.cc
@@ -159,9 +159,8 @@ EXPECT_CALL(cloud_, GetConnectionState()) .WillRepeatedly(ReturnRef(gcd_disabled_state_)); auto set_error = [](const std::string&, const std::string&, - chromeos::ErrorPtr* error) { - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, - "setupUnavailable", ""); + ErrorPtr* error) { + Error::AddTo(error, FROM_HERE, errors::kDomain, "setupUnavailable", ""); }; EXPECT_CALL(cloud_, Setup(_, _, _)) .WillRepeatedly(DoAll(Invoke(set_error), Return(false))); @@ -479,8 +478,8 @@ } TEST_F(PrivetHandlerSetupTest, StatusWifiError) { - chromeos::ErrorPtr error; - chromeos::Error::AddTo(&error, FROM_HERE, "test", "invalidPassphrase", ""); + ErrorPtr error; + Error::AddTo(&error, FROM_HERE, "test", "invalidPassphrase", ""); wifi_.setup_state_ = SetupState{std::move(error)}; const char kExpected[] = R"({ @@ -509,8 +508,8 @@ } TEST_F(PrivetHandlerSetupTest, StatusGcdError) { - chromeos::ErrorPtr error; - chromeos::Error::AddTo(&error, FROM_HERE, "test", "invalidTicket", ""); + ErrorPtr error; + Error::AddTo(&error, FROM_HERE, "test", "invalidTicket", ""); cloud_.setup_state_ = SetupState{std::move(error)}; const char kExpected[] = R"({ @@ -569,9 +568,8 @@ 'passphrase': 'testPass' } })"; - auto set_error = [](const std::string&, const std::string&, - chromeos::ErrorPtr* error) { - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, "deviceBusy", ""); + auto set_error = [](const std::string&, const std::string&, ErrorPtr* error) { + Error::AddTo(error, FROM_HERE, errors::kDomain, "deviceBusy", ""); }; EXPECT_CALL(wifi_, ConfigureCredentials(_, _, _)) .WillOnce(DoAll(Invoke(set_error), Return(false))); @@ -611,9 +609,8 @@ } })"; - auto set_error = [](const std::string&, const std::string&, - chromeos::ErrorPtr* error) { - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, "deviceBusy", ""); + auto set_error = [](const std::string&, const std::string&, ErrorPtr* error) { + Error::AddTo(error, FROM_HERE, errors::kDomain, "deviceBusy", ""); }; EXPECT_CALL(cloud_, Setup(_, _, _)) .WillOnce(DoAll(Invoke(set_error), Return(false))); @@ -675,8 +672,8 @@ EXPECT_PRED2(IsEqualJson, "{'name':'test', 'id':'5'}", HandleRequest("/privet/v3/commands/status", kInput)); - chromeos::ErrorPtr error; - chromeos::Error::AddTo(&error, FROM_HERE, errors::kDomain, "notFound", ""); + ErrorPtr error; + Error::AddTo(&error, FROM_HERE, errors::kDomain, "notFound", ""); EXPECT_CALL(cloud_, GetCommand(_, _, _, _)) .WillOnce(RunCallback<3>(error.get())); @@ -694,8 +691,8 @@ EXPECT_PRED2(IsEqualJson, kExpected, HandleRequest("/privet/v3/commands/cancel", "{'id': '8'}")); - chromeos::ErrorPtr error; - chromeos::Error::AddTo(&error, FROM_HERE, errors::kDomain, "notFound", ""); + ErrorPtr error; + Error::AddTo(&error, FROM_HERE, errors::kDomain, "notFound", ""); EXPECT_CALL(cloud_, CancelCommand(_, _, _, _)) .WillOnce(RunCallback<3>(error.get()));
diff --git a/libweave/src/privet/privet_types.h b/libweave/src/privet/privet_types.h index 7626400..b46e5b6 100644 --- a/libweave/src/privet/privet_types.h +++ b/libweave/src/privet/privet_types.h
@@ -7,7 +7,7 @@ #include <string> -#include <chromeos/errors/error.h> +#include <weave/error.h> namespace weave { namespace privet { @@ -54,7 +54,7 @@ }; explicit ConnectionState(Status status) : status_(status) {} - explicit ConnectionState(chromeos::ErrorPtr error) + explicit ConnectionState(ErrorPtr error) : status_(kOffline), error_(std::move(error)) {} Status status() const { @@ -68,11 +68,11 @@ return status_ == status; } - const chromeos::Error* error() const { return error_.get(); } + const Error* error() const { return error_.get(); } private: Status status_; - chromeos::ErrorPtr error_; + ErrorPtr error_; }; class SetupState final { @@ -84,7 +84,7 @@ }; explicit SetupState(Status status) : status_(status) {} - explicit SetupState(chromeos::ErrorPtr error) + explicit SetupState(ErrorPtr error) : status_(kNone), error_(std::move(error)) {} Status status() const { @@ -98,11 +98,11 @@ return status_ == status; } - const chromeos::Error* error() const { return error_.get(); } + const Error* error() const { return error_.get(); } private: Status status_; - chromeos::ErrorPtr error_; + ErrorPtr error_; }; } // namespace privet
diff --git a/libweave/src/privet/publisher.cc b/libweave/src/privet/publisher.cc index b9f7080..9daed21 100644 --- a/libweave/src/privet/publisher.cc +++ b/libweave/src/privet/publisher.cc
@@ -6,7 +6,7 @@ #include <map> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include <weave/mdns.h> #include "libweave/src/privet/cloud_delegate.h"
diff --git a/libweave/src/privet/security_delegate.h b/libweave/src/privet/security_delegate.h index e168a87..4dfd05c 100644 --- a/libweave/src/privet/security_delegate.h +++ b/libweave/src/privet/security_delegate.h
@@ -44,16 +44,16 @@ CryptoType crypto, std::string* session_id, std::string* device_commitment, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; virtual bool ConfirmPairing(const std::string& session_id, const std::string& client_commitment, std::string* fingerprint, std::string* signature, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; virtual bool CancelPairing(const std::string& session_id, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; }; } // namespace privet
diff --git a/libweave/src/privet/security_manager.cc b/libweave/src/privet/security_manager.cc index 1343a7c..8f90cc4 100644 --- a/libweave/src/privet/security_manager.cc +++ b/libweave/src/privet/security_manager.cc
@@ -87,15 +87,13 @@ // SecurityManager::KeyExchanger methods. const std::string& GetMessage() override { return spake_.GetNextMessage(); } - bool ProcessMessage(const std::string& message, - chromeos::ErrorPtr* error) override { + bool ProcessMessage(const std::string& message, ErrorPtr* error) override { switch (spake_.ProcessMessage(message)) { case crypto::P224EncryptedKeyExchange::kResultPending: return true; case crypto::P224EncryptedKeyExchange::kResultFailed: - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, - errors::kInvalidClientCommitment, - spake_.error()); + Error::AddTo(error, FROM_HERE, errors::kDomain, + errors::kInvalidClientCommitment, spake_.error()); return false; default: LOG(FATAL) << "SecurityManager uses only one round trip"; @@ -120,8 +118,7 @@ // SecurityManager::KeyExchanger methods. const std::string& GetMessage() override { return password_; } - bool ProcessMessage(const std::string& message, - chromeos::ErrorPtr* error) override { + bool ProcessMessage(const std::string& message, ErrorPtr* error) override { return true; } @@ -214,15 +211,14 @@ CryptoType crypto, std::string* session_id, std::string* device_commitment, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { if (!CheckIfPairingAllowed(error)) return false; if (std::find(pairing_modes_.begin(), pairing_modes_.end(), mode) == pairing_modes_.end()) { - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, - errors::kInvalidParams, - "Pairing mode is not enabled"); + Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kInvalidParams, + "Pairing mode is not enabled"); return false; } @@ -235,9 +231,8 @@ embedded_code_ = LoadEmbeddedCode(embedded_code_path_); if (embedded_code_.empty()) { // File is not created yet. - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, - errors::kDeviceBusy, - "Embedded code is not ready"); + Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kDeviceBusy, + "Embedded code is not ready"); return false; } @@ -252,9 +247,8 @@ code = base::StringPrintf("%04i", base::RandInt(0, 9999)); break; default: - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, - errors::kInvalidParams, - "Unsupported pairing mode"); + Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kInvalidParams, + "Unsupported pairing mode"); return false; } @@ -270,8 +264,8 @@ } // Fall through... default: - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, - errors::kInvalidParams, "Unsupported crypto"); + Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kInvalidParams, + "Unsupported crypto"); return false; } @@ -310,12 +304,12 @@ const std::string& client_commitment, std::string* fingerprint, std::string* signature, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { auto session = pending_sessions_.find(session_id); if (session == pending_sessions_.end()) { - chromeos::Error::AddToPrintf( - error, FROM_HERE, errors::kDomain, errors::kUnknownSession, - "Unknown session id: '%s'", session_id.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::kDomain, + errors::kUnknownSession, "Unknown session id: '%s'", + session_id.c_str()); return false; } CHECK(!certificate_fingerprint_.empty()); @@ -323,7 +317,7 @@ std::vector<uint8_t> commitment; if (!Base64Decode(client_commitment, &commitment)) { ClosePendingSession(session_id); - chromeos::Error::AddToPrintf( + Error::AddToPrintf( error, FROM_HERE, errors::kDomain, errors::kInvalidFormat, "Invalid commitment string: '%s'", client_commitment.c_str()); return false; @@ -332,9 +326,8 @@ if (!session->second->ProcessMessage( std::string(commitment.begin(), commitment.end()), error)) { ClosePendingSession(session_id); - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, - errors::kCommitmentMismatch, - "Pairing code or crypto implementation mismatch"); + Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kCommitmentMismatch, + "Pairing code or crypto implementation mismatch"); return false; } @@ -356,7 +349,7 @@ } bool SecurityManager::CancelPairing(const std::string& session_id, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { bool confirmed = CloseConfirmedSession(session_id); bool pending = ClosePendingSession(session_id); if (pending) { @@ -366,9 +359,8 @@ CHECK(!confirmed || !pending); if (confirmed || pending) return true; - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::kDomain, - errors::kUnknownSession, - "Unknown session id: '%s'", session_id.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::kDomain, errors::kUnknownSession, + "Unknown session id: '%s'", session_id.c_str()); return false; } @@ -380,13 +372,13 @@ on_end_ = on_end; } -bool SecurityManager::CheckIfPairingAllowed(chromeos::ErrorPtr* error) { +bool SecurityManager::CheckIfPairingAllowed(ErrorPtr* error) { if (is_security_disabled_) return true; if (block_pairing_until_ > base::Time::Now()) { - chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain, - errors::kDeviceBusy, "Too many pairing attempts"); + Error::AddTo(error, FROM_HERE, errors::kDomain, errors::kDeviceBusy, + "Too many pairing attempts"); return false; }
diff --git a/libweave/src/privet/security_manager.h b/libweave/src/privet/security_manager.h index 3beacb6..f0a6de4 100644 --- a/libweave/src/privet/security_manager.h +++ b/libweave/src/privet/security_manager.h
@@ -14,7 +14,7 @@ #include <base/callback.h> #include <base/files/file_path.h> #include <base/memory/weak_ptr.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include "libweave/src/privet/security_delegate.h" @@ -43,7 +43,7 @@ virtual const std::string& GetMessage() = 0; virtual bool ProcessMessage(const std::string& message, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; virtual const std::string& GetKey() const = 0; }; @@ -66,15 +66,14 @@ CryptoType crypto, std::string* session_id, std::string* device_commitment, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; bool ConfirmPairing(const std::string& session_id, const std::string& client_commitment, std::string* fingerprint, std::string* signature, - chromeos::ErrorPtr* error) override; - bool CancelPairing(const std::string& session_id, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; + bool CancelPairing(const std::string& session_id, ErrorPtr* error) override; void RegisterPairingListeners(const PairingStartListener& on_start, const PairingEndListener& on_end); @@ -86,7 +85,7 @@ private: FRIEND_TEST_ALL_PREFIXES(SecurityManagerTest, ThrottlePairing); // Allows limited number of new sessions without successful authorization. - bool CheckIfPairingAllowed(chromeos::ErrorPtr* error); + bool CheckIfPairingAllowed(ErrorPtr* error); bool ClosePendingSession(const std::string& session_id); bool CloseConfirmedSession(const std::string& session_id);
diff --git a/libweave/src/privet/security_manager_unittest.cc b/libweave/src/privet/security_manager_unittest.cc index 0d13cfe..8ce0ba9 100644 --- a/libweave/src/privet/security_manager_unittest.cc +++ b/libweave/src/privet/security_manager_unittest.cc
@@ -177,7 +177,7 @@ TEST_F(SecurityManagerTest, PairingNoSession) { std::string fingerprint; std::string signature; - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE( security_.ConfirmPairing("123", "345", &fingerprint, &signature, &error)); EXPECT_EQ("unknownSession", error->GetCode()); @@ -251,7 +251,7 @@ auto pair = [this]() { std::string session_id; std::string device_commitment; - chromeos::ErrorPtr error; + ErrorPtr error; bool result = security_.StartPairing(PairingType::kEmbeddedCode, CryptoType::kSpake_p224, &session_id, &device_commitment, &error); @@ -306,7 +306,7 @@ std::string session_id; std::string device_commitment; base::DeleteFile(embedded_code_path_, false); - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE(security_.StartPairing(PairingType::kEmbeddedCode, CryptoType::kSpake_p224, &session_id, &device_commitment, &error));
diff --git a/libweave/src/privet/wifi_bootstrap_manager.cc b/libweave/src/privet/wifi_bootstrap_manager.cc index 4a32fdc..d5f7916 100644 --- a/libweave/src/privet/wifi_bootstrap_manager.cc +++ b/libweave/src/privet/wifi_bootstrap_manager.cc
@@ -178,7 +178,7 @@ bool WifiBootstrapManager::ConfigureCredentials(const std::string& ssid, const std::string& passphrase, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { setup_state_ = SetupState{SetupState::kInProgress}; // TODO(vitalybuka): Find more reliable way to finish request or move delay // into PrivetHandler as it's very HTTP specific. @@ -223,10 +223,9 @@ void WifiBootstrapManager::OnConnectTimeout() { VLOG(1) << "Wifi timed out while connecting"; - chromeos::ErrorPtr error; - chromeos::Error::AddTo(&error, FROM_HERE, errors::kDomain, - errors::kInvalidState, - "Failed to connect to provided network"); + ErrorPtr error; + Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kInvalidState, + "Failed to connect to provided network"); setup_state_ = SetupState{std::move(error)}; StartBootstrapping(); } @@ -271,9 +270,9 @@ return; case NetworkState::kFailure: { // TODO(wiley) Pull error information from somewhere. - chromeos::ErrorPtr error; - chromeos::Error::AddTo(&error, FROM_HERE, errors::kDomain, - errors::kInvalidState, "Unknown WiFi error"); + ErrorPtr error; + Error::AddTo(&error, FROM_HERE, errors::kDomain, errors::kInvalidState, + "Unknown WiFi error"); connection_state_ = ConnectionState{std::move(error)}; return; } @@ -284,10 +283,10 @@ connection_state_ = ConnectionState{ConnectionState::kOnline}; return; } - chromeos::ErrorPtr error; - chromeos::Error::AddToPrintf( - &error, FROM_HERE, errors::kDomain, errors::kInvalidState, - "Unknown network state: %s", EnumToString(service_state).c_str()); + ErrorPtr error; + Error::AddToPrintf(&error, FROM_HERE, errors::kDomain, errors::kInvalidState, + "Unknown network state: %s", + EnumToString(service_state).c_str()); connection_state_ = ConnectionState{std::move(error)}; }
diff --git a/libweave/src/privet/wifi_bootstrap_manager.h b/libweave/src/privet/wifi_bootstrap_manager.h index aa47839..c6f97d7 100644 --- a/libweave/src/privet/wifi_bootstrap_manager.h +++ b/libweave/src/privet/wifi_bootstrap_manager.h
@@ -51,7 +51,7 @@ const SetupState& GetSetupState() const override; bool ConfigureCredentials(const std::string& ssid, const std::string& passphrase, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; std::string GetCurrentlyConnectedSsid() const override; std::string GetHostedSsid() const override; std::set<WifiType> GetTypes() const override;
diff --git a/libweave/src/privet/wifi_delegate.h b/libweave/src/privet/wifi_delegate.h index ae71849..3a44dc4 100644 --- a/libweave/src/privet/wifi_delegate.h +++ b/libweave/src/privet/wifi_delegate.h
@@ -32,7 +32,7 @@ // Final setup state can be retrieved with GetSetupState(). virtual bool ConfigureCredentials(const std::string& ssid, const std::string& password, - chromeos::ErrorPtr* error) = 0; + ErrorPtr* error) = 0; // Returns SSID of the currently configured WiFi network. Empty string, if // WiFi has not been configured yet.
diff --git a/libweave/src/states/state_manager.cc b/libweave/src/states/state_manager.cc index 6f2646b..48dbc74 100644 --- a/libweave/src/states/state_manager.cc +++ b/libweave/src/states/state_manager.cc
@@ -88,7 +88,7 @@ } bool StateManager::SetProperties(const base::DictionaryValue& property_set, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { base::Time timestamp = base::Time::Now(); bool all_success = true; for (base::DictionaryValue::Iterator it(property_set); !it.IsAtEnd(); @@ -107,30 +107,30 @@ bool StateManager::SetPropertyValue(const std::string& full_property_name, const base::Value& value, const base::Time& timestamp, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { auto parts = SplitAtFirst(full_property_name, ".", true); const std::string& package_name = parts.first; const std::string& property_name = parts.second; const bool split = (full_property_name.find(".") != std::string::npos); if (full_property_name.empty() || (split && property_name.empty())) { - chromeos::Error::AddTo(error, FROM_HERE, errors::state::kDomain, - errors::state::kPropertyNameMissing, - "Property name is missing"); + Error::AddTo(error, FROM_HERE, errors::state::kDomain, + errors::state::kPropertyNameMissing, + "Property name is missing"); return false; } if (!split || package_name.empty()) { - chromeos::Error::AddTo(error, FROM_HERE, errors::state::kDomain, - errors::state::kPackageNameMissing, - "Package name is missing in the property name"); + Error::AddTo(error, FROM_HERE, errors::state::kDomain, + errors::state::kPackageNameMissing, + "Package name is missing in the property name"); return false; } StatePackage* package = FindPackage(package_name); if (package == nullptr) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::state::kDomain, - errors::state::kPropertyNotDefined, - "Unknown state property package '%s'", - package_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::state::kDomain, + errors::state::kPropertyNotDefined, + "Unknown state property package '%s'", + package_name.c_str()); return false; } if (!package->SetPropertyValue(property_name, value, error)) @@ -154,22 +154,21 @@ bool StateManager::LoadStateDefinition(const base::DictionaryValue& json, const std::string& category, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { base::DictionaryValue::Iterator iter(json); while (!iter.IsAtEnd()) { std::string package_name = iter.key(); if (package_name.empty()) { - chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, - kInvalidPackageError, - "State package name is empty"); + Error::AddTo(error, FROM_HERE, kErrorDomain, kInvalidPackageError, + "State package name is empty"); return false; } const base::DictionaryValue* package_dict = nullptr; if (!iter.value().GetAsDictionary(&package_dict)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, - errors::json::kObjectExpected, - "State package '%s' must be an object", - package_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, + errors::json::kObjectExpected, + "State package '%s' must be an object", + package_name.c_str()); return false; } StatePackage* package = FindOrCreatePackage(package_name); @@ -185,70 +184,67 @@ } bool StateManager::LoadStateDefinition(const base::FilePath& json_file_path, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<const base::DictionaryValue> json = LoadJsonDict(json_file_path, error); if (!json) return false; std::string category = json_file_path.BaseName().RemoveExtension().value(); if (category == kDefaultCategory) { - chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain, - kInvalidCategoryError, - "Invalid state category specified in '%s'", - json_file_path.value().c_str()); + Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kInvalidCategoryError, + "Invalid state category specified in '%s'", + json_file_path.value().c_str()); return false; } if (!LoadStateDefinition(*json, category, error)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError, - "Failed to load file '%s'", - json_file_path.value().c_str()); + Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError, + "Failed to load file '%s'", + json_file_path.value().c_str()); return false; } return true; } bool StateManager::LoadBaseStateDefinition(const base::FilePath& json_file_path, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<const base::DictionaryValue> json = LoadJsonDict(json_file_path, error); if (!json) return false; if (!LoadStateDefinition(*json, kDefaultCategory, error)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError, - "Failed to load file '%s'", - json_file_path.value().c_str()); + Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError, + "Failed to load file '%s'", + json_file_path.value().c_str()); return false; } return true; } bool StateManager::LoadStateDefaults(const base::DictionaryValue& json, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { base::DictionaryValue::Iterator iter(json); while (!iter.IsAtEnd()) { std::string package_name = iter.key(); if (package_name.empty()) { - chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, - kInvalidPackageError, - "State package name is empty"); + Error::AddTo(error, FROM_HERE, kErrorDomain, kInvalidPackageError, + "State package name is empty"); return false; } const base::DictionaryValue* package_dict = nullptr; if (!iter.value().GetAsDictionary(&package_dict)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, - errors::json::kObjectExpected, - "State package '%s' must be an object", - package_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, + errors::json::kObjectExpected, + "State package '%s' must be an object", + package_name.c_str()); return false; } StatePackage* package = FindPackage(package_name); if (package == nullptr) { - chromeos::Error::AddToPrintf( - error, FROM_HERE, errors::json::kDomain, - errors::json::kObjectExpected, - "Providing values for undefined state package '%s'", - package_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, + errors::json::kObjectExpected, + "Providing values for undefined state package '%s'", + package_name.c_str()); return false; } if (!package->AddValuesFromJson(package_dict, error)) @@ -259,15 +255,15 @@ } bool StateManager::LoadStateDefaults(const base::FilePath& json_file_path, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<const base::DictionaryValue> json = LoadJsonDict(json_file_path, error); if (!json) return false; if (!LoadStateDefaults(*json, error)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError, - "Failed to load file '%s'", - json_file_path.value().c_str()); + Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError, + "Failed to load file '%s'", + json_file_path.value().c_str()); return false; } return true;
diff --git a/libweave/src/states/state_manager.h b/libweave/src/states/state_manager.h index 30825bd..1668bb2 100644 --- a/libweave/src/states/state_manager.h +++ b/libweave/src/states/state_manager.h
@@ -14,7 +14,7 @@ #include <base/callback.h> #include <base/macros.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include <weave/state.h> #include "libweave/src/states/state_change_queue_interface.h" @@ -39,7 +39,7 @@ // State overrides. void AddOnChangedCallback(const base::Closure& callback) override; bool SetProperties(const base::DictionaryValue& property_set, - chromeos::ErrorPtr* error) override; + ErrorPtr* error) override; std::unique_ptr<base::DictionaryValue> GetStateValuesAsJson() const override; // Initializes the state manager and load device state fragments. @@ -73,33 +73,31 @@ bool SetPropertyValue(const std::string& full_property_name, const base::Value& value, const base::Time& timestamp, - chromeos::ErrorPtr* error); + ErrorPtr* error); // Loads a device state fragment from a JSON object. |category| represents // a device daemon providing the state fragment or empty string for the // base state fragment. bool LoadStateDefinition(const base::DictionaryValue& json, const std::string& category, - chromeos::ErrorPtr* error); + ErrorPtr* error); // Loads a device state fragment JSON file. The file name (without extension) // is used as the state fragment category. bool LoadStateDefinition(const base::FilePath& json_file_path, - chromeos::ErrorPtr* error); + ErrorPtr* error); // Loads the base device state fragment JSON file. This state fragment // defines the standard state properties from the 'base' package as defined // by GCD specification. bool LoadBaseStateDefinition(const base::FilePath& json_file_path, - chromeos::ErrorPtr* error); + ErrorPtr* error); // Loads state default values from JSON object. - bool LoadStateDefaults(const base::DictionaryValue& json, - chromeos::ErrorPtr* error); + bool LoadStateDefaults(const base::DictionaryValue& json, ErrorPtr* error); // Loads state default values from JSON file. - bool LoadStateDefaults(const base::FilePath& json_file_path, - chromeos::ErrorPtr* error); + bool LoadStateDefaults(const base::FilePath& json_file_path, ErrorPtr* error); // Finds a package by its name. Returns nullptr if not found. StatePackage* FindPackage(const std::string& package_name);
diff --git a/libweave/src/states/state_manager_unittest.cc b/libweave/src/states/state_manager_unittest.cc index 95f85a5..cf3d904 100644 --- a/libweave/src/states/state_manager_unittest.cc +++ b/libweave/src/states/state_manager_unittest.cc
@@ -69,13 +69,13 @@ void LoadStateDefinition(const base::DictionaryValue* json, const std::string& category, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { ASSERT_TRUE(mgr_->LoadStateDefinition(*json, category, error)); } bool SetPropertyValue(const std::string& name, const base::Value& value, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { return mgr_->SetPropertyValue(name, value, timestamp_, error); } @@ -154,14 +154,14 @@ } TEST_F(StateManagerTest, SetPropertyValue_Error_NoName) { - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE(SetPropertyValue("", base::FundamentalValue{0}, &error)); EXPECT_EQ(errors::state::kDomain, error->GetDomain()); EXPECT_EQ(errors::state::kPropertyNameMissing, error->GetCode()); } TEST_F(StateManagerTest, SetPropertyValue_Error_NoPackage) { - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE( SetPropertyValue("state_property", base::FundamentalValue{0}, &error)); EXPECT_EQ(errors::state::kDomain, error->GetDomain()); @@ -169,7 +169,7 @@ } TEST_F(StateManagerTest, SetPropertyValue_Error_UnknownPackage) { - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE( SetPropertyValue("power.level", base::FundamentalValue{0}, &error)); EXPECT_EQ(errors::state::kDomain, error->GetDomain()); @@ -177,7 +177,7 @@ } TEST_F(StateManagerTest, SetPropertyValue_Error_UnknownProperty) { - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE( SetPropertyValue("base.level", base::FundamentalValue{0}, &error)); EXPECT_EQ(errors::state::kDomain, error->GetDomain());
diff --git a/libweave/src/states/state_package.cc b/libweave/src/states/state_package.cc index e20d267..2a9ce95 100644 --- a/libweave/src/states/state_package.cc +++ b/libweave/src/states/state_package.cc
@@ -18,7 +18,7 @@ } bool StatePackage::AddSchemaFromJson(const base::DictionaryValue* json, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { ObjectSchema schema; if (!schema.FromJson(json, nullptr, error)) return false; @@ -26,10 +26,10 @@ // Scan first to make sure we have no property redefinitions. for (const auto& pair : schema.GetProps()) { if (types_.GetProp(pair.first)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::state::kDomain, - errors::state::kPropertyRedefinition, - "State property '%s.%s' is already defined", - name_.c_str(), pair.first.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::state::kDomain, + errors::state::kPropertyRedefinition, + "State property '%s.%s' is already defined", + name_.c_str(), pair.first.c_str()); return false; } } @@ -45,7 +45,7 @@ } bool StatePackage::AddValuesFromJson(const base::DictionaryValue* json, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { for (base::DictionaryValue::Iterator it(*json); !it.IsAtEnd(); it.Advance()) { if (!SetPropertyValue(it.key(), it.value(), error)) return false; @@ -65,13 +65,13 @@ std::unique_ptr<base::Value> StatePackage::GetPropertyValue( const std::string& property_name, - chromeos::ErrorPtr* error) const { + ErrorPtr* error) const { auto it = values_.find(property_name); if (it == values_.end()) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::state::kDomain, - errors::state::kPropertyNotDefined, - "State property '%s.%s' is not defined", - name_.c_str(), property_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::state::kDomain, + errors::state::kPropertyNotDefined, + "State property '%s.%s' is not defined", name_.c_str(), + property_name.c_str()); return nullptr; } @@ -80,13 +80,13 @@ bool StatePackage::SetPropertyValue(const std::string& property_name, const base::Value& value, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { auto it = values_.find(property_name); if (it == values_.end()) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::state::kDomain, - errors::state::kPropertyNotDefined, - "State property '%s.%s' is not defined", - name_.c_str(), property_name.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::state::kDomain, + errors::state::kPropertyNotDefined, + "State property '%s.%s' is not defined", name_.c_str(), + property_name.c_str()); return false; } auto new_value = it->second->GetPropType()->CreatePropValue(value, error);
diff --git a/libweave/src/states/state_package.h b/libweave/src/states/state_package.h index 0ee7cc9..70e4df2 100644 --- a/libweave/src/states/state_package.h +++ b/libweave/src/states/state_package.h
@@ -10,7 +10,7 @@ #include <string> #include <base/macros.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> #include "libweave/src/commands/object_schema.h" #include "libweave/src/commands/prop_values.h" @@ -30,13 +30,11 @@ // Loads state property definitions from a JSON object and adds them // to the current package. - bool AddSchemaFromJson(const base::DictionaryValue* json, - chromeos::ErrorPtr* error); + bool AddSchemaFromJson(const base::DictionaryValue* json, ErrorPtr* error); // Loads a set of state property values from a JSON object and assigns them // to existing properties. A property must be defined prior to loading its // value. We use this when we load default values during buffet startup. - bool AddValuesFromJson(const base::DictionaryValue* json, - chromeos::ErrorPtr* error); + bool AddValuesFromJson(const base::DictionaryValue* json, ErrorPtr* error); // Returns a set of state properties and their values as a JSON object. // After being aggregated across multiple packages, this becomes the device @@ -57,12 +55,12 @@ // include the package name as part of the property name. std::unique_ptr<base::Value> GetPropertyValue( const std::string& property_name, - chromeos::ErrorPtr* error) const; + ErrorPtr* error) const; // Sets the value for a specific state property. |property_name| must not // include the package name as part of the property name. bool SetPropertyValue(const std::string& property_name, const base::Value& value, - chromeos::ErrorPtr* error); + ErrorPtr* error); std::shared_ptr<const PropValue> GetProperty( const std::string& property_name) const {
diff --git a/libweave/src/states/state_package_unittest.cc b/libweave/src/states/state_package_unittest.cc index d6978c0..45914bc 100644 --- a/libweave/src/states/state_package_unittest.cc +++ b/libweave/src/states/state_package_unittest.cc
@@ -213,7 +213,7 @@ TEST_F(StatePackageTest, AddSchemaFromJson_Error_Redefined) { auto dict = CreateDictionaryValue("{'color':['white', 'blue', 'red']}"); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE(package_->AddSchemaFromJson(dict.get(), &error)); EXPECT_EQ(errors::state::kDomain, error->GetDomain()); EXPECT_EQ(errors::state::kPropertyRedefinition, error->GetCode()); @@ -221,7 +221,7 @@ TEST_F(StatePackageTest, AddValuesFromJson_Error_Undefined) { auto dict = CreateDictionaryValue("{'brightness':'medium'}"); - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_FALSE(package_->AddValuesFromJson(dict.get(), &error)); EXPECT_EQ(errors::state::kDomain, error->GetDomain()); EXPECT_EQ(errors::state::kPropertyNotDefined, error->GetCode()); @@ -236,7 +236,7 @@ } TEST_F(StatePackageTest, GetPropertyValue_Unknown) { - chromeos::ErrorPtr error; + ErrorPtr error; EXPECT_EQ(nullptr, package_->GetPropertyValue("volume", &error)); EXPECT_EQ(errors::state::kDomain, error->GetDomain()); EXPECT_EQ(errors::state::kPropertyNotDefined, error->GetCode()); @@ -275,7 +275,7 @@ } TEST_F(StatePackageTest, SetPropertyValue_Error_TypeMismatch) { - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE( package_->SetPropertyValue("color", base::FundamentalValue{12}, &error)); EXPECT_EQ(errors::commands::kDomain, error->GetDomain()); @@ -289,7 +289,7 @@ } TEST_F(StatePackageTest, SetPropertyValue_Error_OutOfRange) { - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE( package_->SetPropertyValue("iso", base::FundamentalValue{150}, &error)); EXPECT_EQ(errors::commands::kDomain, error->GetDomain()); @@ -297,31 +297,31 @@ } TEST_F(StatePackageTest, SetPropertyValue_Error_Object_TypeMismatch) { - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE(package_->SetPropertyValue( "direction", *CreateDictionaryValue("{'altitude': 45.0, 'azimuth': '15'}"), &error)); EXPECT_EQ(errors::commands::kDomain, error->GetDomain()); EXPECT_EQ(errors::commands::kInvalidPropValue, error->GetCode()); - const chromeos::Error* inner = error->GetInnerError(); + const Error* inner = error->GetInnerError(); EXPECT_EQ(errors::commands::kDomain, inner->GetDomain()); EXPECT_EQ(errors::commands::kTypeMismatch, inner->GetCode()); } TEST_F(StatePackageTest, SetPropertyValue_Error_Object_OutOfRange) { - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE(package_->SetPropertyValue( "direction", *CreateDictionaryValue("{'altitude': 100.0, 'azimuth': 290.0}"), &error)); EXPECT_EQ(errors::commands::kDomain, error->GetDomain()); EXPECT_EQ(errors::commands::kInvalidPropValue, error->GetCode()); - const chromeos::Error* inner = error->GetInnerError(); + const Error* inner = error->GetInnerError(); EXPECT_EQ(errors::commands::kDomain, inner->GetDomain()); EXPECT_EQ(errors::commands::kOutOfRange, inner->GetCode()); } TEST_F(StatePackageTest, SetPropertyValue_Error_Object_UnknownProperty) { - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE(package_->SetPropertyValue( "direction", *CreateDictionaryValue( "{'altitude': 10.0, 'azimuth': 20.0, 'spin': 30.0}"), @@ -340,7 +340,7 @@ } TEST_F(StatePackageTest, SetPropertyValue_Error_Object_MissingProperty) { - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE(package_->SetPropertyValue( "direction", *CreateDictionaryValue("{'altitude': 10.0}"), &error)); EXPECT_EQ(errors::commands::kDomain, error->GetDomain()); @@ -348,7 +348,7 @@ } TEST_F(StatePackageTest, SetPropertyValue_Error_Unknown) { - chromeos::ErrorPtr error; + ErrorPtr error; ASSERT_FALSE(package_->SetPropertyValue("volume", base::FundamentalValue{100}, &error)); EXPECT_EQ(errors::state::kDomain, error->GetDomain());
diff --git a/libweave/src/utils.cc b/libweave/src/utils.cc index ea31476..dd62f88 100644 --- a/libweave/src/utils.cc +++ b/libweave/src/utils.cc
@@ -33,12 +33,12 @@ std::unique_ptr<base::DictionaryValue> LoadJsonDict( const base::FilePath& json_file_path, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::string json_string; if (!base::ReadFileToString(json_file_path, &json_string)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError, - "Failed to read file '%s'", - json_file_path.value().c_str()); + Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError, + "Failed to read file '%s'", + json_file_path.value().c_str()); return {}; } return LoadJsonDict(json_string, error); @@ -46,25 +46,25 @@ std::unique_ptr<base::DictionaryValue> LoadJsonDict( const std::string& json_string, - chromeos::ErrorPtr* error) { + ErrorPtr* error) { std::unique_ptr<base::DictionaryValue> result; std::string error_message; auto value = base::JSONReader::ReadAndReturnError( json_string, base::JSON_PARSE_RFC, nullptr, &error_message); if (!value) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, - errors::json::kParseError, - "Error parsing JSON string '%s' (%zu): %s", - LimitString(json_string, kMaxStrLen).c_str(), - json_string.size(), error_message.c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, + errors::json::kParseError, + "Error parsing JSON string '%s' (%zu): %s", + LimitString(json_string, kMaxStrLen).c_str(), + json_string.size(), error_message.c_str()); return result; } base::DictionaryValue* dict_value = nullptr; if (!value->GetAsDictionary(&dict_value)) { - chromeos::Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, - errors::json::kObjectExpected, - "JSON string '%s' is not a JSON object", - LimitString(json_string, kMaxStrLen).c_str()); + Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain, + errors::json::kObjectExpected, + "JSON string '%s' is not a JSON object", + LimitString(json_string, kMaxStrLen).c_str()); return result; } else { // |value| is now owned by |dict_value|.
diff --git a/libweave/src/utils.h b/libweave/src/utils.h index a06ad7c..7ef4fa1 100644 --- a/libweave/src/utils.h +++ b/libweave/src/utils.h
@@ -10,7 +10,7 @@ #include <base/values.h> #include <base/files/file_path.h> -#include <chromeos/errors/error.h> +#include <weave/error.h> namespace weave { @@ -31,12 +31,12 @@ // in error details in |error|. std::unique_ptr<base::DictionaryValue> LoadJsonDict( const base::FilePath& json_file_path, - chromeos::ErrorPtr* error); + ErrorPtr* error); // Helper function to load a JSON dictionary from a string. std::unique_ptr<base::DictionaryValue> LoadJsonDict( const std::string& json_string, - chromeos::ErrorPtr* error); + ErrorPtr* error); } // namespace weave