libweave: Buffet includes only weave/include files
External components should include only weave/include files
BUG=brillo:1242
TEST='FEATURES=test emerge-gizmo buffet'
Change-Id: I39edb5662694be23afa2a09aaca39f041e2d009b
Reviewed-on: https://chromium-review.googlesource.com/285673
Trybot-Ready: 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/buffet/buffet.gyp b/buffet/buffet.gyp
index 7b92439..1716756 100644
--- a/buffet/buffet.gyp
+++ b/buffet/buffet.gyp
@@ -46,6 +46,7 @@
'../libweave/src/commands/schema_constants.cc',
'../libweave/src/commands/schema_utils.cc',
'../libweave/src/commands/user_role.cc',
+ '../libweave/src/device_manager.cc',
'../libweave/src/device_registration_info.cc',
'../libweave/src/notification/notification_parser.cc',
'../libweave/src/notification/pull_channel.cc',
diff --git a/buffet/main.cc b/buffet/main.cc
index 3a76046..510dd04 100644
--- a/buffet/main.cc
+++ b/buffet/main.cc
@@ -24,7 +24,7 @@
class Daemon final : public DBusServiceDaemon {
public:
- explicit Daemon(const buffet::Manager::Options& options)
+ explicit Daemon(const weave::Device::Options& options)
: DBusServiceDaemon(kServiceName, kRootServicePath), options_{options} {}
protected:
@@ -36,7 +36,7 @@
void OnShutdown(int* return_code) override { manager_->Stop(); }
private:
- buffet::Manager::Options options_;
+ weave::Device::Options options_;
std::unique_ptr<buffet::Manager> manager_;
DISALLOW_COPY_AND_ASSIGN(Daemon);
};
@@ -80,17 +80,17 @@
auto device_whitelist =
chromeos::string_utils::Split(FLAGS_device_whitelist, ",", true, true);
- buffet::Manager::Options options;
+ weave::Device::Options options;
options.config_path = base::FilePath{FLAGS_config_path};
options.state_path = base::FilePath{FLAGS_state_path};
+ options.definitions_path = base::FilePath{"/etc/buffet"};
options.test_definitions_path = base::FilePath{FLAGS_test_definitions_path};
options.xmpp_enabled = FLAGS_enable_xmpp;
options.device_whitelist.insert(device_whitelist.begin(),
device_whitelist.end());
- options.privet.config_path = base::FilePath{FLAGS_config_path};
- options.privet.disable_privet = FLAGS_disable_privet;
- options.privet.disable_security = FLAGS_disable_security;
- options.privet.enable_ping = FLAGS_enable_ping;
+ options.disable_privet = FLAGS_disable_privet;
+ options.disable_security = FLAGS_disable_security;
+ options.enable_ping = FLAGS_enable_ping;
buffet::Daemon daemon{options};
return daemon.Run();
diff --git a/buffet/manager.cc b/buffet/manager.cc
index f7ecc0e..3ba5f5f 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -23,34 +23,35 @@
#include <dbus/object_path.h>
#include <dbus/values_util.h>
-#include "libweave/src/base_api_handler.h"
-#include "libweave/src/commands/command_instance.h"
-#include "libweave/src/commands/schema_constants.h"
-#include "libweave/src/privet/constants.h"
-#include "libweave/src/privet/security_manager.h"
-#include "libweave/src/privet/shill_client.h"
-#include "libweave/src/privet/wifi_bootstrap_manager.h"
-#include "libweave/src/states/state_change_queue.h"
-#include "libweave/src/states/state_manager.h"
-#include "libweave/src/storage_impls.h"
-
using chromeos::dbus_utils::AsyncEventSequencer;
using chromeos::dbus_utils::ExportedObjectManager;
-namespace privet = weave::privet;
namespace buffet {
namespace {
-// Max of 100 state update events should be enough in the queue.
-const size_t kMaxStateChangeQueueSize = 100;
-// The number of seconds each HTTP request will be allowed before timing out.
-const int kRequestTimeoutSeconds = 30;
-
const char kPairingSessionIdKey[] = "sessionId";
const char kPairingModeKey[] = "mode";
const char kPairingCodeKey[] = "code";
+const char kErrorDomain[] = "buffet";
+const char kNotImplemented[] = "notImplemented";
+
+std::string StatusToString(weave::RegistrationStatus status) {
+ switch (status) {
+ case weave::RegistrationStatus::kUnconfigured:
+ return "unconfigured";
+ case weave::RegistrationStatus::kConnecting:
+ return "connecting";
+ case weave::RegistrationStatus::kConnected:
+ return "connected";
+ case weave::RegistrationStatus::kInvalidCredentials:
+ return "invalid_credentials";
+ }
+ CHECK(0) << "Unknown status";
+ return "unknown";
+}
+
} // anonymous namespace
Manager::Manager(const base::WeakPtr<ExportedObjectManager>& object_manager)
@@ -62,108 +63,57 @@
Manager::~Manager() {
}
-void Manager::Start(const Options& options, AsyncEventSequencer* sequencer) {
- command_manager_ =
- std::make_shared<weave::CommandManager>(dbus_object_.GetObjectManager());
- command_manager_->AddOnCommandDefChanged(base::Bind(
+void Manager::Start(const weave::Device::Options& options,
+ AsyncEventSequencer* sequencer) {
+ device_ = weave::Device::Create();
+ device_->Start(options, &dbus_object_, sequencer);
+
+ device_->GetCommands()->AddOnCommandDefChanged(base::Bind(
&Manager::OnCommandDefsChanged, weak_ptr_factory_.GetWeakPtr()));
- command_manager_->Startup(base::FilePath{"/etc/buffet"},
- options.test_definitions_path);
- state_change_queue_.reset(
- new weave::StateChangeQueue(kMaxStateChangeQueueSize));
- state_manager_ =
- std::make_shared<weave::StateManager>(state_change_queue_.get());
- state_manager_->AddOnChangedCallback(
+
+ device_->GetState()->AddOnChangedCallback(
base::Bind(&Manager::OnStateChanged, weak_ptr_factory_.GetWeakPtr()));
- state_manager_->Startup();
- std::unique_ptr<weave::BuffetConfig> config{
- new weave::BuffetConfig{options.state_path}};
- config->AddOnChangedCallback(
+ device_->GetConfig()->AddOnChangedCallback(
base::Bind(&Manager::OnConfigChanged, weak_ptr_factory_.GetWeakPtr()));
- config->Load(options.config_path);
- auto transport = chromeos::http::Transport::CreateDefault();
- transport->SetDefaultTimeout(base::TimeDelta::FromSeconds(
- kRequestTimeoutSeconds));
-
- shill_client_.reset(new weave::privet::ShillClient(dbus_object_.GetBus(),
- options.device_whitelist));
-
- // TODO(avakulenko): Figure out security implications of storing
- // device info state data unencrypted.
- device_info_.reset(new weave::DeviceRegistrationInfo(
- command_manager_, state_manager_, std::move(config), transport,
- base::MessageLoop::current()->task_runner(), options.xmpp_enabled,
- shill_client_.get()));
- device_info_->AddOnRegistrationChangedCallback(base::Bind(
+ device_->GetCloud()->AddOnRegistrationChangedCallback(base::Bind(
&Manager::OnRegistrationChanged, weak_ptr_factory_.GetWeakPtr()));
- base_api_handler_.reset(new weave::BaseApiHandler{
- device_info_->AsWeakPtr(), state_manager_, command_manager_});
+ device_->GetPrivet()->AddOnWifiSetupChangedCallback(base::Bind(
+ &Manager::UpdateWiFiBootstrapState, weak_ptr_factory_.GetWeakPtr()));
- device_info_->Start();
+ device_->GetPrivet()->AddOnPairingChangedCallbacks(
+ base::Bind(&Manager::OnPairingStart, weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&Manager::OnPairingEnd, weak_ptr_factory_.GetWeakPtr()));
dbus_adaptor_.RegisterWithDBusObject(&dbus_object_);
dbus_object_.RegisterAsync(
sequencer->GetHandler("Manager.RegisterAsync() failed.", true));
-
- if (!options.privet.disable_privet)
- StartPrivet(options.privet, sequencer);
-}
-
-void Manager::StartPrivet(const weave::privet::Manager::Options& options,
- AsyncEventSequencer* sequencer) {
- privet_.reset(new weave::privet::Manager{});
- privet_->Start(options, dbus_object_.GetBus(), shill_client_.get(),
- device_info_.get(), command_manager_.get(),
- state_manager_.get(), sequencer);
-
- if (privet_->GetWifiBootstrapManager()) {
- privet_->GetWifiBootstrapManager()->RegisterStateListener(base::Bind(
- &Manager::UpdateWiFiBootstrapState, weak_ptr_factory_.GetWeakPtr()));
- } else {
- UpdateWiFiBootstrapState(weave::privet::WifiBootstrapManager::kDisabled);
- }
-
- privet_->GetSecurityManager()->RegisterPairingListeners(
- base::Bind(&Manager::OnPairingStart, weak_ptr_factory_.GetWeakPtr()),
- base::Bind(&Manager::OnPairingEnd, weak_ptr_factory_.GetWeakPtr()));
- // TODO(wiley) Watch for appropriate state variables from |cloud_delegate|.
}
void Manager::Stop() {
- if (privet_)
- privet_->OnShutdown();
+ device_.reset();
}
+// TODO(vitalybuka): Remove, it's just duplicate of property.
void Manager::CheckDeviceRegistered(
DBusMethodResponsePtr<std::string> response) {
LOG(INFO) << "Received call to Manager.CheckDeviceRegistered()";
- chromeos::ErrorPtr error;
- bool registered = device_info_->VerifyRegistrationCredentials(&error);
- // If it fails due to any reason other than 'device not registered',
- // treat it as a real error and report it to the caller.
- if (!registered &&
- !error->HasError(weave::kErrorDomainGCD, "device_not_registered")) {
- response->ReplyWithError(error.get());
- return;
- }
-
- response->Return(registered ? device_info_->GetConfig().device_id()
- : std::string());
+ response->Return(dbus_adaptor_.GetDeviceId());
}
+// TODO(vitalybuka): Remove or rename to leave for testing.
void Manager::GetDeviceInfo(DBusMethodResponsePtr<std::string> response) {
LOG(INFO) << "Received call to Manager.GetDeviceInfo()";
std::shared_ptr<DBusMethodResponse<std::string>> shared_response =
std::move(response);
- device_info_->GetDeviceInfo(
+ device_->GetCloud()->GetDeviceInfo(
base::Bind(&Manager::OnGetDeviceInfoSuccess,
weak_ptr_factory_.GetWeakPtr(), shared_response),
- base::Bind(&Manager::OnGetDeviceInfoError,
- weak_ptr_factory_.GetWeakPtr(), shared_response));
+ base::Bind(&Manager::OnGetDeviceInfoError, weak_ptr_factory_.GetWeakPtr(),
+ shared_response));
}
void Manager::OnGetDeviceInfoSuccess(
@@ -186,32 +136,27 @@
LOG(INFO) << "Received call to Manager.RegisterDevice()";
chromeos::ErrorPtr error;
- std::string device_id = device_info_->RegisterDevice(ticket_id, &error);
+ std::string device_id =
+ device_->GetCloud()->RegisterDevice(ticket_id, &error);
if (!device_id.empty()) {
response->Return(device_id);
return;
}
- if (!error) {
- // TODO(zeuthen): This can be changed to CHECK(error) once
- // RegisterDevice() has been fixed to set |error| when failing.
- chromeos::Error::AddTo(&error, FROM_HERE, weave::kErrorDomainGCD,
- "internal_error",
- "device_id empty but error not set");
- }
+ CHECK(error);
response->ReplyWithError(error.get());
}
void Manager::UpdateState(DBusMethodResponsePtr<> response,
const chromeos::VariantDictionary& property_set) {
chromeos::ErrorPtr error;
- if (!state_manager_->SetProperties(property_set, &error))
+ if (!device_->GetState()->SetProperties(property_set, &error))
response->ReplyWithError(error.get());
else
response->Return();
}
bool Manager::GetState(chromeos::ErrorPtr* error, std::string* state) {
- auto json = state_manager_->GetStateValuesAsJson(error);
+ auto json = device_->GetState()->GetStateValuesAsJson(error);
if (!json)
return false;
base::JSONWriter::WriteWithOptions(
@@ -240,7 +185,7 @@
return response->ReplyWithError(error.get());
std::string id;
- if (!command_manager_->AddCommand(*command, role, &id, &error))
+ if (!device_->GetCommands()->AddCommand(*command, role, &id, &error))
return response->ReplyWithError(error.get());
response->Return(id);
@@ -248,10 +193,10 @@
void Manager::GetCommand(DBusMethodResponsePtr<std::string> response,
const std::string& id) {
- const weave::CommandInstance* command = command_manager_->FindCommand(id);
+ const weave::CommandInstance* command =
+ device_->GetCommands()->FindCommand(id);
if (!command) {
- response->ReplyWithError(FROM_HERE, weave::kErrorDomainGCD,
- "unknown_command",
+ response->ReplyWithError(FROM_HERE, kErrorDomain, "unknown_command",
"Can't find command with id: " + id);
return;
}
@@ -270,7 +215,8 @@
response->ReplyWithError(error.get());
return;
}
- if (!command_manager_->SetCommandVisibility(in_names, visibility, &error)) {
+ if (!device_->GetCommands()->SetCommandVisibility(in_names, visibility,
+ &error)) {
response->ReplyWithError(error.get());
return;
}
@@ -286,15 +232,13 @@
chromeos::ErrorPtr* error,
const dbus::ObjectPath& in_listener_path,
const chromeos::VariantDictionary& in_options) {
- chromeos::Error::AddTo(error, FROM_HERE, weave::privet::errors::kDomain,
- weave::privet::errors::kNotImplemented,
+ chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, kNotImplemented,
"Manual WiFi bootstrapping is not implemented");
return false;
}
bool Manager::DisableWiFiBootstrapping(chromeos::ErrorPtr* error) {
- chromeos::Error::AddTo(error, FROM_HERE, weave::privet::errors::kDomain,
- weave::privet::errors::kNotImplemented,
+ chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, kNotImplemented,
"Manual WiFi bootstrapping is not implemented");
return false;
}
@@ -303,25 +247,23 @@
chromeos::ErrorPtr* error,
const dbus::ObjectPath& in_listener_path,
const chromeos::VariantDictionary& in_options) {
- chromeos::Error::AddTo(error, FROM_HERE, weave::privet::errors::kDomain,
- weave::privet::errors::kNotImplemented,
+ chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, kNotImplemented,
"Manual GCD bootstrapping is not implemented");
return false;
}
bool Manager::DisableGCDBootstrapping(chromeos::ErrorPtr* error) {
- chromeos::Error::AddTo(error, FROM_HERE, weave::privet::errors::kDomain,
- weave::privet::errors::kNotImplemented,
+ chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, kNotImplemented,
"Manual GCD bootstrapping is not implemented");
return false;
}
bool Manager::UpdateDeviceInfo(chromeos::ErrorPtr* error,
- const std::string& in_name,
- const std::string& in_description,
- const std::string& in_location) {
- return device_info_->UpdateDeviceInfo(in_name, in_description, in_location,
- error);
+ const std::string& name,
+ const std::string& description,
+ const std::string& location) {
+ return device_->GetCloud()->UpdateDeviceInfo(name, description, location,
+ error);
}
bool Manager::UpdateServiceConfig(chromeos::ErrorPtr* error,
@@ -330,17 +272,18 @@
const std::string& api_key,
const std::string& oauth_url,
const std::string& service_url) {
- return device_info_->UpdateServiceConfig(client_id, client_secret, api_key,
- oauth_url, service_url, error);
+ return device_->GetCloud()->UpdateServiceConfig(
+ client_id, client_secret, api_key, oauth_url, service_url, error);
}
void Manager::OnCommandDefsChanged() {
// Limit only to commands that are visible to the local clients.
- auto commands = command_manager_->GetCommandDictionary().GetCommandsAsJson(
- [](const weave::CommandDefinition* def) {
- return def->GetVisibility().local;
- },
- true, nullptr);
+ auto commands =
+ device_->GetCommands()->GetCommandDictionary().GetCommandsAsJson(
+ [](const weave::CommandDefinition* def) {
+ return def->GetVisibility().local;
+ },
+ true, nullptr);
CHECK(commands);
std::string json;
base::JSONWriter::WriteWithOptions(
@@ -349,7 +292,7 @@
}
void Manager::OnStateChanged() {
- auto state = state_manager_->GetStateValuesAsJson(nullptr);
+ auto state = device_->GetState()->GetStateValuesAsJson(nullptr);
CHECK(state);
std::string json;
base::JSONWriter::WriteWithOptions(
@@ -374,38 +317,30 @@
void Manager::UpdateWiFiBootstrapState(
weave::privet::WifiBootstrapManager::State state) {
- if (auto wifi = privet_->GetWifiBootstrapManager()) {
- const std::string& ssid{wifi->GetCurrentlyConnectedSsid()};
- if (ssid != device_info_->GetConfig().last_configured_ssid()) {
- weave::BuffetConfig::Transaction change{device_info_->GetMutableConfig()};
- change.set_last_configured_ssid(ssid);
- }
- }
-
switch (state) {
- case weave::privet::WifiBootstrapManager::kDisabled:
+ case weave::WifiSetupState::kDisabled:
dbus_adaptor_.SetWiFiBootstrapState("disabled");
break;
- case weave::privet::WifiBootstrapManager::kBootstrapping:
+ case weave::WifiSetupState::kBootstrapping:
dbus_adaptor_.SetWiFiBootstrapState("waiting");
break;
- case weave::privet::WifiBootstrapManager::kMonitoring:
+ case weave::WifiSetupState::kMonitoring:
dbus_adaptor_.SetWiFiBootstrapState("monitoring");
break;
- case weave::privet::WifiBootstrapManager::kConnecting:
+ case weave::WifiSetupState::kConnecting:
dbus_adaptor_.SetWiFiBootstrapState("connecting");
break;
}
}
void Manager::OnPairingStart(const std::string& session_id,
- privet::PairingType pairing_type,
+ weave::PairingType pairing_type,
const std::vector<uint8_t>& code) {
// For now, just overwrite the exposed PairInfo with
// the most recent pairing attempt.
dbus_adaptor_.SetPairingInfo(chromeos::VariantDictionary{
{kPairingSessionIdKey, session_id},
- {kPairingModeKey, PairingTypeToString(pairing_type)},
+ {kPairingModeKey, weave::privet::PairingTypeToString(pairing_type)},
{kPairingCodeKey, code},
});
}
diff --git a/buffet/manager.h b/buffet/manager.h
index 4f73a3c..af01a80 100644
--- a/buffet/manager.h
+++ b/buffet/manager.h
@@ -20,10 +20,7 @@
#include <chromeos/errors/error.h>
#include "buffet/org.chromium.Buffet.Manager.h"
-#include "libweave/src/commands/command_manager.h"
-#include "libweave/src/device_registration_info.h"
-#include "libweave/src/privet/privet_manager.h"
-#include "libweave/src/privet/wifi_bootstrap_manager.h"
+#include "weave/device.h"
namespace chromeos {
namespace dbus_utils {
@@ -31,13 +28,6 @@
} // namespace dbus_utils
} // namespace chromeos
-namespace weave {
-class BaseApiHandler;
-class BuffetConfig;
-class StateChangeQueue;
-class StateManager;
-} // namespace weave
-
namespace buffet {
template<typename... Types>
@@ -58,16 +48,7 @@
object_manager);
~Manager();
- struct Options {
- base::FilePath config_path;
- base::FilePath state_path;
- base::FilePath test_definitions_path;
- bool xmpp_enabled{true};
- std::set<std::string> device_whitelist;
- weave::privet::Manager::Options privet;
- };
-
- void Start(const Options& options,
+ void Start(const weave::Device::Options& options,
chromeos::dbus_utils::AsyncEventSequencer* sequencer);
void Stop();
@@ -80,9 +61,9 @@
void RegisterDevice(DBusMethodResponsePtr<std::string> response,
const std::string& ticket_id) override;
bool UpdateDeviceInfo(chromeos::ErrorPtr* error,
- const std::string& in_name,
- const std::string& in_description,
- const std::string& in_location) override;
+ const std::string& name,
+ const std::string& description,
+ const std::string& location) override;
bool UpdateServiceConfig(chromeos::ErrorPtr* error,
const std::string& client_id,
const std::string& client_secret,
@@ -119,30 +100,23 @@
const std::shared_ptr<DBusMethodResponse<std::string>>& response,
const chromeos::Error* error);
- void StartPrivet(const weave::privet::Manager::Options& options,
+ void StartPrivet(const weave::Device::Options& options,
chromeos::dbus_utils::AsyncEventSequencer* sequencer);
void OnCommandDefsChanged();
void OnStateChanged();
void OnRegistrationChanged(weave::RegistrationStatus status);
void OnConfigChanged(const weave::BuffetConfig& config);
- void UpdateWiFiBootstrapState(
- weave::privet::WifiBootstrapManager::State state);
+ void UpdateWiFiBootstrapState(weave::WifiSetupState state);
void OnPairingStart(const std::string& session_id,
- weave::privet::PairingType pairing_type,
+ weave::PairingType pairing_type,
const std::vector<uint8_t>& code);
void OnPairingEnd(const std::string& session_id);
org::chromium::Buffet::ManagerAdaptor dbus_adaptor_{this};
chromeos::dbus_utils::DBusObject dbus_object_;
- std::shared_ptr<weave::CommandManager> command_manager_;
- std::unique_ptr<weave::StateChangeQueue> state_change_queue_;
- std::shared_ptr<weave::StateManager> state_manager_;
- std::unique_ptr<weave::DeviceRegistrationInfo> device_info_;
- std::unique_ptr<weave::BaseApiHandler> base_api_handler_;
- std::unique_ptr<weave::privet::ShillClient> shill_client_;
- std::unique_ptr<weave::privet::Manager> privet_;
+ std::unique_ptr<weave::Device> device_;
base::WeakPtrFactory<Manager> weak_ptr_factory_{this};
DISALLOW_COPY_AND_ASSIGN(Manager);
diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h
new file mode 100644
index 0000000..5a49409
--- /dev/null
+++ b/libweave/include/weave/device.h
@@ -0,0 +1,80 @@
+// Copyright 2015 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_DEVICE_H_
+#define LIBWEAVE_INCLUDE_WEAVE_DEVICE_H_
+
+#include <memory>
+#include <set>
+#include <string>
+
+#include <base/files/file_path.h>
+#include <chromeos/errors/error.h>
+#include <chromeos/variant_dictionary.h>
+
+#include "weave/types.h"
+
+namespace chromeos {
+namespace dbus_utils {
+class AsyncEventSequencer;
+class DBusObject;
+}
+}
+
+namespace weave {
+
+class CommandManager;
+class StateManager;
+class BuffetConfig;
+class DeviceRegistrationInfo;
+namespace privet {
+class Manager;
+}
+
+// TODO(vitalybuka): Replace with interfaces.
+using Commands = CommandManager;
+using State = StateManager;
+using Config = BuffetConfig;
+using Cloud = DeviceRegistrationInfo;
+using Privet = privet::Manager;
+
+class Device {
+ public:
+ struct Options {
+ base::FilePath config_path;
+ base::FilePath state_path;
+ base::FilePath definitions_path;
+ base::FilePath test_definitions_path;
+ bool xmpp_enabled{true};
+ std::set<std::string> device_whitelist;
+ bool disable_privet{false};
+ bool disable_security{false};
+ bool enable_ping{false};
+ };
+
+ virtual ~Device() = default;
+
+ virtual void Start(const Options& options,
+ chromeos::dbus_utils::DBusObject* dbus_object,
+ chromeos::dbus_utils::AsyncEventSequencer* sequencer) = 0;
+
+ virtual Commands* GetCommands() = 0;
+ virtual State* GetState() = 0;
+ virtual Config* GetConfig() = 0;
+ virtual Cloud* GetCloud() = 0;
+ virtual Privet* GetPrivet() = 0;
+
+ static std::unique_ptr<Device> Create();
+};
+
+} // namespace weave
+
+// TODO(vitalybuka): Replace with interfaces
+#include "libweave/src/buffet_config.h"
+#include "libweave/src/commands/command_manager.h"
+#include "libweave/src/device_registration_info.h"
+#include "libweave/src/privet/privet_manager.h"
+#include "libweave/src/states/state_manager.h"
+
+#endif // LIBWEAVE_INCLUDE_WEAVE_DEVICE_H_
diff --git a/libweave/include/weave/types.h b/libweave/include/weave/types.h
new file mode 100644
index 0000000..55a1fb0
--- /dev/null
+++ b/libweave/include/weave/types.h
@@ -0,0 +1,36 @@
+// Copyright 2015 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_TYPES_H_
+#define LIBWEAVE_INCLUDE_WEAVE_TYPES_H_
+
+#include <string>
+
+namespace weave {
+
+// See the DBus interface XML file for complete descriptions of these states.
+enum class RegistrationStatus {
+ kUnconfigured, // We have no credentials.
+ kConnecting, // We have credentials but not yet connected.
+ kConnected, // We're registered and connected to the cloud.
+ kInvalidCredentials, // Our registration has been revoked.
+};
+
+enum class PairingType {
+ kPinCode,
+ kEmbeddedCode,
+ kUltrasound32,
+ kAudible32,
+};
+
+enum class WifiSetupState {
+ kDisabled,
+ kBootstrapping,
+ kMonitoring,
+ kConnecting,
+};
+
+} // namespace weave
+
+#endif // LIBWEAVE_INCLUDE_WEAVE_TYPES_H_
diff --git a/libweave/src/buffet_config.cc b/libweave/src/buffet_config.cc
index 2d4aa58..2b62c27 100644
--- a/libweave/src/buffet_config.cc
+++ b/libweave/src/buffet_config.cc
@@ -150,15 +150,15 @@
if (store.GetString(config_keys::kEmbeddedCodePath, &embedded_code_path)) {
embedded_code_path_ = base::FilePath(embedded_code_path);
if (!embedded_code_path_.empty())
- pairing_modes_ = {privet::PairingType::kEmbeddedCode};
+ pairing_modes_ = {PairingType::kEmbeddedCode};
}
std::string modes_str;
if (store.GetString(config_keys::kPairingModes, &modes_str)) {
- std::set<privet::PairingType> pairing_modes;
+ std::set<PairingType> pairing_modes;
for (const std::string& mode :
chromeos::string_utils::Split(modes_str, ",", true, true)) {
- privet::PairingType pairing_mode;
+ PairingType pairing_mode;
CHECK(privet::StringToPairingType(mode, &pairing_mode));
pairing_modes.insert(pairing_mode);
}
diff --git a/libweave/src/buffet_config.h b/libweave/src/buffet_config.h
index d08a1b8..d384b89 100644
--- a/libweave/src/buffet_config.h
+++ b/libweave/src/buffet_config.h
@@ -108,9 +108,7 @@
}
bool wifi_auto_setup_enabled() const { return wifi_auto_setup_enabled_; }
- const std::set<privet::PairingType>& pairing_modes() const {
- return pairing_modes_;
- }
+ const std::set<PairingType>& pairing_modes() const { return pairing_modes_; }
const base::FilePath& embedded_code_path() const {
return embedded_code_path_;
}
@@ -153,7 +151,7 @@
base::TimeDelta backup_polling_period_{base::TimeDelta::FromMinutes(30)};
bool wifi_auto_setup_enabled_{true};
- std::set<privet::PairingType> pairing_modes_{privet::PairingType::kPinCode};
+ std::set<PairingType> pairing_modes_{PairingType::kPinCode};
base::FilePath embedded_code_path_;
std::string device_id_;
diff --git a/libweave/src/buffet_config_unittest.cc b/libweave/src/buffet_config_unittest.cc
index bd46403..a286c34 100644
--- a/libweave/src/buffet_config_unittest.cc
+++ b/libweave/src/buffet_config_unittest.cc
@@ -58,7 +58,7 @@
EXPECT_EQ(base::TimeDelta::FromSeconds(7), config_->polling_period());
EXPECT_EQ(base::TimeDelta::FromMinutes(30), config_->backup_polling_period());
EXPECT_TRUE(config_->wifi_auto_setup_enabled());
- EXPECT_EQ(std::set<privet::PairingType>{privet::PairingType::kPinCode},
+ EXPECT_EQ(std::set<PairingType>{PairingType::kPinCode},
config_->pairing_modes());
EXPECT_EQ("", config_->embedded_code_path().value());
EXPECT_EQ("Developer device", config_->name());
@@ -120,9 +120,9 @@
EXPECT_EQ(base::TimeDelta::FromMilliseconds(6589),
config_->backup_polling_period());
EXPECT_FALSE(config_->wifi_auto_setup_enabled());
- std::set<privet::PairingType> pairing_types{
- privet::PairingType::kPinCode, privet::PairingType::kEmbeddedCode,
- privet::PairingType::kUltrasound32, privet::PairingType::kAudible32};
+ std::set<PairingType> pairing_types{
+ PairingType::kPinCode, PairingType::kEmbeddedCode,
+ PairingType::kUltrasound32, PairingType::kAudible32};
EXPECT_EQ(pairing_types, config_->pairing_modes());
EXPECT_EQ("/conf_code", config_->embedded_code_path().value());
EXPECT_EQ("conf_name", config_->name());
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
new file mode 100644
index 0000000..7d2943b
--- /dev/null
+++ b/libweave/src/device_manager.cc
@@ -0,0 +1,119 @@
+// Copyright 2015 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 "libweave/src/device_manager.h"
+
+#include <string>
+
+#include <chromeos/dbus/dbus_object.h>
+
+#include <base/message_loop/message_loop.h>
+
+#include "libweave/src/base_api_handler.h"
+#include "libweave/src/commands/command_manager.h"
+#include "libweave/src/privet/privet_manager.h"
+#include "libweave/src/privet/shill_client.h"
+#include "libweave/src/states/state_change_queue.h"
+#include "libweave/src/states/state_manager.h"
+
+namespace weave {
+
+namespace {
+
+// Max of 100 state update events should be enough in the queue.
+const size_t kMaxStateChangeQueueSize = 100;
+// The number of seconds each HTTP request will be allowed before timing out.
+const int kRequestTimeoutSeconds = 30;
+
+} // namespace
+
+DeviceManager::DeviceManager() {}
+
+DeviceManager::~DeviceManager() {}
+
+void DeviceManager::Start(
+ const Options& options,
+ chromeos::dbus_utils::DBusObject* dbus_object,
+ chromeos::dbus_utils::AsyncEventSequencer* sequencer) {
+ command_manager_ =
+ std::make_shared<CommandManager>(dbus_object->GetObjectManager());
+ command_manager_->Startup(options.definitions_path,
+ options.test_definitions_path);
+ state_change_queue_.reset(new StateChangeQueue(kMaxStateChangeQueueSize));
+ state_manager_ = std::make_shared<StateManager>(state_change_queue_.get());
+ state_manager_->Startup();
+
+ auto transport = chromeos::http::Transport::CreateDefault();
+ transport->SetDefaultTimeout(
+ base::TimeDelta::FromSeconds(kRequestTimeoutSeconds));
+
+ std::unique_ptr<BuffetConfig> config{new BuffetConfig{options.state_path}};
+ config->Load(options.config_path);
+
+ shill_client_.reset(
+ new privet::ShillClient(dbus_object->GetBus(), options.device_whitelist));
+
+ // TODO(avakulenko): Figure out security implications of storing
+ // device info state data unencrypted.
+ device_info_.reset(new DeviceRegistrationInfo(
+ command_manager_, state_manager_, std::move(config), transport,
+ base::MessageLoop::current()->task_runner(), options.xmpp_enabled,
+ shill_client_.get()));
+ base_api_handler_.reset(new BaseApiHandler{device_info_->AsWeakPtr(),
+ state_manager_, command_manager_});
+
+ device_info_->Start();
+
+ if (!options.disable_privet)
+ StartPrivet(options, dbus_object, sequencer);
+}
+
+CommandManager* DeviceManager::GetCommands() {
+ return command_manager_.get();
+}
+
+StateManager* DeviceManager::GetState() {
+ return state_manager_.get();
+}
+
+BuffetConfig* DeviceManager::GetConfig() {
+ return device_info_->GetMutableConfig();
+}
+
+DeviceRegistrationInfo* DeviceManager::GetCloud() {
+ return device_info_.get();
+}
+
+privet::Manager* DeviceManager::GetPrivet() {
+ return privet_.get();
+}
+
+void DeviceManager::StartPrivet(
+ const Options& options,
+ chromeos::dbus_utils::DBusObject* dbus_object,
+ chromeos::dbus_utils::AsyncEventSequencer* sequencer) {
+ privet_.reset(new privet::Manager{});
+ privet_->Start(options, dbus_object->GetBus(), shill_client_.get(),
+ device_info_.get(), command_manager_.get(),
+ state_manager_.get(), sequencer);
+
+ privet_->AddOnWifiSetupChangedCallback(
+ base::Bind(&DeviceManager::OnWiFiBootstrapStateChanged,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+void DeviceManager::OnWiFiBootstrapStateChanged(
+ weave::privet::WifiBootstrapManager::State state) {
+ const std::string& ssid = privet_->GetCurrentlyConnectedSsid();
+ if (ssid != device_info_->GetConfig().last_configured_ssid()) {
+ weave::BuffetConfig::Transaction change{device_info_->GetMutableConfig()};
+ change.set_last_configured_ssid(ssid);
+ }
+}
+
+std::unique_ptr<Device> Device::Create() {
+ return std::unique_ptr<Device>{new DeviceManager};
+}
+
+} // namespace weave
diff --git a/libweave/src/device_manager.h b/libweave/src/device_manager.h
new file mode 100644
index 0000000..0eba82a
--- /dev/null
+++ b/libweave/src/device_manager.h
@@ -0,0 +1,66 @@
+// Copyright 2015 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_SRC_DEVICE_MANAGER_H_
+#define LIBWEAVE_SRC_DEVICE_MANAGER_H_
+
+#include "weave/device.h"
+
+namespace chromeos {
+namespace dbus_utils {
+class DBusObject;
+}
+}
+
+namespace weave {
+
+class BaseApiHandler;
+class BuffetConfig;
+class CommandManager;
+class DeviceRegistrationInfo;
+class StateChangeQueue;
+class StateManager;
+
+namespace privet {
+class ShillClient;
+class Manager;
+} // namespace privet
+
+class DeviceManager final : public Device {
+ public:
+ DeviceManager();
+ ~DeviceManager() override;
+
+ void Start(const Options& options,
+ chromeos::dbus_utils::DBusObject* dbus_object,
+ chromeos::dbus_utils::AsyncEventSequencer* sequencer) override;
+
+ CommandManager* GetCommands() override;
+ StateManager* GetState() override;
+ BuffetConfig* GetConfig() override;
+ DeviceRegistrationInfo* GetCloud() override;
+ privet::Manager* GetPrivet() override;
+
+ private:
+ void StartPrivet(const Options& options,
+ chromeos::dbus_utils::DBusObject* dbus_object,
+ chromeos::dbus_utils::AsyncEventSequencer* sequencer);
+
+ void OnWiFiBootstrapStateChanged(weave::WifiSetupState state);
+
+ std::shared_ptr<CommandManager> command_manager_;
+ std::unique_ptr<StateChangeQueue> state_change_queue_;
+ std::shared_ptr<StateManager> state_manager_;
+ std::unique_ptr<DeviceRegistrationInfo> device_info_;
+ std::unique_ptr<BaseApiHandler> base_api_handler_;
+ std::unique_ptr<privet::ShillClient> shill_client_;
+ std::unique_ptr<privet::Manager> privet_;
+
+ base::WeakPtrFactory<DeviceManager> weak_ptr_factory_{this};
+ DISALLOW_COPY_AND_ASSIGN(DeviceManager);
+};
+
+} // namespace weave
+
+#endif // LIBWEAVE_SRC_DEVICE_MANAGER_H_
diff --git a/libweave/src/device_registration_info.cc b/libweave/src/device_registration_info.cc
index 4671010..d88b00a 100644
--- a/libweave/src/device_registration_info.cc
+++ b/libweave/src/device_registration_info.cc
@@ -704,7 +704,7 @@
chromeos::ErrorPtr* error) {
BuffetConfig::Transaction change(config_.get());
if (!change.set_local_anonymous_access_role(anonymous_access_role)) {
- chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomainBuffet,
+ chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain,
"invalid_parameter", "Invalid role: %s",
anonymous_access_role.c_str());
return false;
@@ -724,8 +724,7 @@
const std::string& service_url,
chromeos::ErrorPtr* error) {
if (HaveRegistrationCredentials()) {
- chromeos::Error::AddTo(error, FROM_HERE, kErrorDomainBuffet,
- "already_registered",
+ chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, "already_registered",
"Unable to change config for registered device");
return false;
}
@@ -1010,7 +1009,7 @@
void DeviceRegistrationInfo::SetRegistrationStatus(
RegistrationStatus new_status) {
VLOG_IF(1, new_status != registration_status_)
- << "Changing registration status to " << StatusToString(new_status);
+ << "Changing registration status to " << static_cast<int>(new_status);
registration_status_ = new_status;
for (const auto& cb : on_registration_changed_)
cb.Run(registration_status_);
diff --git a/libweave/src/device_registration_info.h b/libweave/src/device_registration_info.h
index 5d55ee6..afb64d1 100644
--- a/libweave/src/device_registration_info.h
+++ b/libweave/src/device_registration_info.h
@@ -29,7 +29,6 @@
#include "libweave/src/notification/notification_channel.h"
#include "libweave/src/notification/notification_delegate.h"
#include "libweave/src/notification/pull_channel.h"
-#include "libweave/src/registration_status.h"
#include "libweave/src/states/state_change_queue_interface.h"
#include "libweave/src/storage_interface.h"
diff --git a/libweave/src/privet/cloud_delegate.cc b/libweave/src/privet/cloud_delegate.cc
index 1737b10..8f2aefc 100644
--- a/libweave/src/privet/cloud_delegate.cc
+++ b/libweave/src/privet/cloud_delegate.cc
@@ -21,6 +21,7 @@
#include "libweave/src/commands/command_manager.h"
#include "libweave/src/device_registration_info.h"
#include "libweave/src/privet/constants.h"
+#include "libweave/src/registration_status.h"
#include "libweave/src/states/state_manager.h"
using chromeos::ErrorPtr;
diff --git a/libweave/src/privet/privet_manager.cc b/libweave/src/privet/privet_manager.cc
index 7fe3a78..1c48548 100644
--- a/libweave/src/privet/privet_manager.cc
+++ b/libweave/src/privet/privet_manager.cc
@@ -35,9 +35,7 @@
#include "libweave/src/privet/device_delegate.h"
#include "libweave/src/privet/peerd_client.h"
#include "libweave/src/privet/privet_handler.h"
-#include "libweave/src/privet/security_manager.h"
#include "libweave/src/privet/shill_client.h"
-#include "libweave/src/privet/wifi_bootstrap_manager.h"
namespace weave {
namespace privet {
@@ -62,7 +60,7 @@
Manager::~Manager() {
}
-void Manager::Start(const Options& options,
+void Manager::Start(const Device::Options& options,
const scoped_refptr<dbus::Bus>& bus,
ShillClient* shill_client,
DeviceRegistrationInfo* device,
@@ -123,7 +121,27 @@
}
}
-void Manager::OnShutdown() {
+std::string Manager::GetCurrentlyConnectedSsid() const {
+ return wifi_bootstrap_manager_
+ ? wifi_bootstrap_manager_->GetCurrentlyConnectedSsid()
+ : "";
+}
+
+void Manager::AddOnWifiSetupChangedCallback(
+ const WifiBootstrapManager::StateListener& callback) {
+ if (wifi_bootstrap_manager_)
+ wifi_bootstrap_manager_->RegisterStateListener(callback);
+ else
+ callback.Run(WifiSetupState::kDisabled);
+}
+
+void Manager::AddOnPairingChangedCallbacks(
+ const SecurityManager::PairingStartListener& on_start,
+ const SecurityManager::PairingEndListener& on_end) {
+ security_->RegisterPairingListeners(on_start, on_end);
+}
+
+void Manager::Shutdown() {
web_server_->Disconnect();
}
diff --git a/libweave/src/privet/privet_manager.h b/libweave/src/privet/privet_manager.h
index f16330d..3a01f13 100644
--- a/libweave/src/privet/privet_manager.h
+++ b/libweave/src/privet/privet_manager.h
@@ -14,6 +14,9 @@
#include <base/scoped_observer.h>
#include "libweave/src/privet/cloud_delegate.h"
+#include "libweave/src/privet/security_manager.h"
+#include "libweave/src/privet/wifi_bootstrap_manager.h"
+#include "weave/device.h"
namespace chromeos {
namespace dbus_utils {
@@ -44,21 +47,13 @@
class PrivetHandler;
class SecurityManager;
class ShillClient;
-class WifiBootstrapManager;
class Manager : public CloudDelegate::Observer {
public:
- struct Options {
- bool disable_privet{false};
- bool disable_security{false};
- bool enable_ping{false};
- base::FilePath config_path;
- };
-
Manager();
~Manager();
- void Start(const Options& options,
+ void Start(const weave::Device::Options& options,
const scoped_refptr<dbus::Bus>& bus,
ShillClient* shill_client,
DeviceRegistrationInfo* device,
@@ -66,17 +61,21 @@
StateManager* state_manager,
chromeos::dbus_utils::AsyncEventSequencer* sequencer);
- void OnShutdown();
+ std::string GetCurrentlyConnectedSsid() const;
- void OnDeviceInfoChanged() override;
+ void AddOnWifiSetupChangedCallback(
+ const WifiBootstrapManager::StateListener& callback);
- privet::WifiBootstrapManager* GetWifiBootstrapManager() {
- return wifi_bootstrap_manager_.get();
- }
+ void AddOnPairingChangedCallbacks(
+ const SecurityManager::PairingStartListener& on_start,
+ const SecurityManager::PairingEndListener& on_end);
- privet::SecurityManager* GetSecurityManager() { return security_.get(); }
+ void Shutdown();
private:
+ // CloudDelegate::Observer
+ void OnDeviceInfoChanged() override;
+
void PrivetRequestHandler(std::unique_ptr<libwebserv::Request> request,
std::unique_ptr<libwebserv::Response> response);
@@ -88,7 +87,6 @@
std::unique_ptr<libwebserv::Response> response);
void OnChanged();
-
void OnConnectivityChanged(bool online);
void OnProtocolHandlerConnected(
diff --git a/libweave/src/privet/security_delegate.h b/libweave/src/privet/security_delegate.h
index 430e882..57098f6 100644
--- a/libweave/src/privet/security_delegate.h
+++ b/libweave/src/privet/security_delegate.h
@@ -13,17 +13,11 @@
#include <chromeos/secure_blob.h>
#include "libweave/src/privet/privet_types.h"
+#include "weave/types.h"
namespace weave {
namespace privet {
-enum class PairingType {
- kPinCode,
- kEmbeddedCode,
- kUltrasound32,
- kAudible32,
-};
-
enum class CryptoType {
kNone,
kSpake_p224,
diff --git a/libweave/src/privet/wifi_bootstrap_manager.cc b/libweave/src/privet/wifi_bootstrap_manager.cc
index ef7096a..487450c 100644
--- a/libweave/src/privet/wifi_bootstrap_manager.cc
+++ b/libweave/src/privet/wifi_bootstrap_manager.cc
@@ -70,7 +70,7 @@
return;
}
- UpdateState(kBootstrapping);
+ UpdateState(State::kBootstrapping);
if (!last_configured_ssid_.empty()) {
// If we have been configured before, we'd like to periodically take down
// our AP and find out if we can connect again. Many kinds of failures are
@@ -94,7 +94,7 @@
const std::string& passphrase) {
VLOG(1) << "WiFi is attempting to connect. (ssid=" << ssid
<< ", pass=" << passphrase << ").";
- UpdateState(kConnecting);
+ UpdateState(State::kConnecting);
base::MessageLoop::current()->PostDelayedTask(
FROM_HERE, base::Bind(&WifiBootstrapManager::OnConnectTimeout,
tasks_weak_factory_.GetWeakPtr()),
@@ -112,27 +112,28 @@
VLOG(1) << "Monitoring connectivity.";
// We already have a callback in place with |shill_client_| to update our
// connectivity state. See OnConnectivityChange().
- UpdateState(kMonitoring);
+ UpdateState(State::kMonitoring);
}
void WifiBootstrapManager::EndMonitoring() {
}
void WifiBootstrapManager::UpdateState(State new_state) {
- VLOG(3) << "Switching state from " << state_ << " to " << new_state;
+ VLOG(3) << "Switching state from " << static_cast<int>(state_) << " to "
+ << static_cast<int>(new_state);
// Abort irrelevant tasks.
tasks_weak_factory_.InvalidateWeakPtrs();
switch (state_) {
- case kDisabled:
+ case State::kDisabled:
break;
- case kBootstrapping:
+ case State::kBootstrapping:
EndBootstrapping();
break;
- case kMonitoring:
+ case State::kMonitoring:
EndMonitoring();
break;
- case kConnecting:
+ case State::kConnecting:
EndConnecting();
break;
}
@@ -221,11 +222,11 @@
VLOG(3) << "ConnectivityChanged: " << is_connected;
UpdateConnectionState();
- if (state_ == kBootstrapping) {
+ if (state_ == State::kBootstrapping) {
StartMonitoring();
return;
}
- if (state_ == kMonitoring) {
+ if (state_ == State::kMonitoring) {
if (is_connected) {
tasks_weak_factory_.InvalidateWeakPtrs();
} else {
diff --git a/libweave/src/privet/wifi_bootstrap_manager.h b/libweave/src/privet/wifi_bootstrap_manager.h
index 5b51c87..4a68c46 100644
--- a/libweave/src/privet/wifi_bootstrap_manager.h
+++ b/libweave/src/privet/wifi_bootstrap_manager.h
@@ -31,12 +31,7 @@
class WifiBootstrapManager : public WifiDelegate,
public CloudDelegate::Observer {
public:
- enum State {
- kDisabled,
- kBootstrapping,
- kMonitoring,
- kConnecting,
- };
+ using State = WifiSetupState;
using StateListener = base::Callback<void(State)>;
@@ -94,7 +89,7 @@
// Initialization could be delayed if ssid_generator_ is not ready.
bool is_initialized_{false};
- State state_{kDisabled};
+ State state_{State::kDisabled};
// Setup state is the temporal state of the most recent bootstrapping attempt.
// It is not persisted to disk.
SetupState setup_state_{SetupState::kNone};
diff --git a/libweave/src/registration_status.h b/libweave/src/registration_status.h
index 7b6694f..6511de1 100644
--- a/libweave/src/registration_status.h
+++ b/libweave/src/registration_status.h
@@ -7,16 +7,11 @@
#include <string>
+#include "weave/types.h"
+
namespace weave {
-// See the DBus interface XML file for complete descriptions of these states.
-enum class RegistrationStatus {
- kUnconfigured, // We have no credentials.
- kConnecting, // We have credentials but not yet connected.
- kConnected, // We're registered and connected to the cloud.
- kInvalidCredentials, // Our registration has been revoked.
-};
-
+// TODO(vitalybuka): Use EnumToString.
std::string StatusToString(RegistrationStatus status);
} // namespace weave
diff --git a/libweave/src/states/state_manager.cc b/libweave/src/states/state_manager.cc
index a548062..7b867ca 100644
--- a/libweave/src/states/state_manager.cc
+++ b/libweave/src/states/state_manager.cc
@@ -181,7 +181,7 @@
while (!iter.IsAtEnd()) {
std::string package_name = iter.key();
if (package_name.empty()) {
- chromeos::Error::AddTo(error, FROM_HERE, kErrorDomainBuffet,
+ chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain,
kInvalidPackageError,
"State package name is empty");
return false;
@@ -214,7 +214,7 @@
return false;
std::string category = json_file_path.BaseName().RemoveExtension().value();
if (category == kDefaultCategory) {
- chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomainBuffet,
+ chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain,
kInvalidCategoryError,
"Invalid state category specified in '%s'",
json_file_path.value().c_str());
@@ -222,8 +222,8 @@
}
if (!LoadStateDefinition(*json, category, error)) {
- chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomainBuffet,
- kFileReadError, "Failed to load file '%s'",
+ chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError,
+ "Failed to load file '%s'",
json_file_path.value().c_str());
return false;
}
@@ -237,8 +237,8 @@
if (!json)
return false;
if (!LoadStateDefinition(*json, kDefaultCategory, error)) {
- chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomainBuffet,
- kFileReadError, "Failed to load file '%s'",
+ chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError,
+ "Failed to load file '%s'",
json_file_path.value().c_str());
return false;
}
@@ -251,7 +251,7 @@
while (!iter.IsAtEnd()) {
std::string package_name = iter.key();
if (package_name.empty()) {
- chromeos::Error::AddTo(error, FROM_HERE, kErrorDomainBuffet,
+ chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain,
kInvalidPackageError,
"State package name is empty");
return false;
@@ -287,8 +287,8 @@
if (!json)
return false;
if (!LoadStateDefaults(*json, error)) {
- chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomainBuffet,
- kFileReadError, "Failed to load file '%s'",
+ chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError,
+ "Failed to load file '%s'",
json_file_path.value().c_str());
return false;
}
diff --git a/libweave/src/utils.cc b/libweave/src/utils.cc
index a8cd587..7e0864c 100644
--- a/libweave/src/utils.cc
+++ b/libweave/src/utils.cc
@@ -33,7 +33,7 @@
} // anonymous namespace
-const char kErrorDomainBuffet[] = "buffet";
+const char kErrorDomain[] = "weave";
const char kFileReadError[] = "file_read_error";
const char kInvalidCategoryError[] = "invalid_category";
const char kInvalidPackageError[] = "invalid_package";
@@ -44,8 +44,8 @@
std::string json_string;
if (!base::ReadFileToString(json_file_path, &json_string)) {
chromeos::errors::system::AddSystemError(error, FROM_HERE, errno);
- chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomainBuffet,
- kFileReadError, "Failed to read file '%s'",
+ chromeos::Error::AddToPrintf(error, FROM_HERE, kErrorDomain, kFileReadError,
+ "Failed to read file '%s'",
json_file_path.value().c_str());
return {};
}
diff --git a/libweave/src/utils.h b/libweave/src/utils.h
index 8fa556a..8bbae3e 100644
--- a/libweave/src/utils.h
+++ b/libweave/src/utils.h
@@ -14,10 +14,9 @@
namespace weave {
-// Buffet-wide errors.
// TODO(avakulenko): This should be consolidated into errors::<domain> namespace
// See crbug.com/417274
-extern const char kErrorDomainBuffet[];
+extern const char kErrorDomain[];
extern const char kFileReadError[];
extern const char kInvalidCategoryError[];
extern const char kInvalidPackageError[];