Remove weave::Commands
Methods were moved into weave::Device.
BUG:24267885
Change-Id: I9116269a5ca1a32ee3b263377af5e9bd368bbef9
Reviewed-on: https://weave-review.googlesource.com/1243
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/libweave/examples/ubuntu/main.cc b/libweave/examples/ubuntu/main.cc
index d9c1283..9b062ef 100644
--- a/libweave/examples/ubuntu/main.cc
+++ b/libweave/examples/ubuntu/main.cc
@@ -29,8 +29,8 @@
class CommandHandler {
public:
explicit CommandHandler(weave::Device* device) : device_{device} {
- device->GetCommands()->AddCommandAddedCallback(base::Bind(
- &CommandHandler::OnNewCommand, weak_ptr_factory_.GetWeakPtr()));
+ device->AddCommandAddedCallback(base::Bind(&CommandHandler::OnNewCommand,
+ weak_ptr_factory_.GetWeakPtr()));
}
private:
diff --git a/libweave/include/weave/commands.h b/libweave/include/weave/commands.h
deleted file mode 100644
index cfbfe63..0000000
--- a/libweave/include/weave/commands.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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_COMMANDS_H_
-#define LIBWEAVE_INCLUDE_WEAVE_COMMANDS_H_
-
-#include <string>
-
-#include <base/callback.h>
-#include <base/values.h>
-#include <weave/error.h>
-#include <weave/command.h>
-
-namespace weave {
-
-class Commands {
- public:
- using CommandCallback = base::Callback<void(Command*)>;
-
- // Adds notification callback for a new command being added to the queue.
- virtual void AddCommandAddedCallback(const CommandCallback& callback) = 0;
-
- // Adds notification callback for a command being removed from the queue.
- virtual void AddCommandRemovedCallback(const CommandCallback& callback) = 0;
-
- // Adds a new command to the command queue.
- virtual bool AddCommand(const base::DictionaryValue& command,
- std::string* id,
- 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
- // for a long period of time.
- virtual Command* FindCommand(const std::string& id) = 0;
-
- protected:
- virtual ~Commands() = default;
-};
-
-} // namespace weave
-
-#endif // LIBWEAVE_INCLUDE_WEAVE_COMMANDS_H_
diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h
index 03e3984..c81dd04 100644
--- a/libweave/include/weave/device.h
+++ b/libweave/include/weave/device.h
@@ -9,7 +9,7 @@
#include <set>
#include <string>
-#include <weave/commands.h>
+#include <weave/command.h>
#include <weave/export.h>
#include <weave/provider/bluetooth.h>
#include <weave/provider/config_store.h>
@@ -35,16 +35,34 @@
virtual ~Device() = default;
// Returns reference the current settings.
- virtual const Settings& GetSettings() = 0;
+ virtual const Settings& GetSettings() const = 0;
// Callback type for AddSettingsChangedCallback.
using SettingsChangedCallback =
base::Callback<void(const Settings& settings)>;
+
// Subscribes to notification settings changes.
virtual void AddSettingsChangedCallback(
const SettingsChangedCallback& callback) = 0;
- virtual Commands* GetCommands() = 0;
+ // Callback type for AddCommandAddedCallback and AddCommandRemovedCallback.
+ using CommandCallback = base::Callback<void(Command*)>;
+
+ // Adds notification callback for a new command being added to the queue.
+ virtual void AddCommandAddedCallback(const CommandCallback& callback) = 0;
+
+ // Adds notification callback for a command being removed from the queue.
+ virtual void AddCommandRemovedCallback(const CommandCallback& callback) = 0;
+
+ // Adds a new command to the command queue.
+ virtual bool AddCommand(const base::DictionaryValue& command,
+ std::string* id,
+ 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
+ // for a long period of time.
+ virtual Command* FindCommand(const std::string& id) = 0;
// Sets callback which is called when stat is changed.
virtual void AddStateChangedCallback(const base::Closure& callback) = 0;
@@ -72,6 +90,7 @@
// Callback type for GcdStatusCallback.
using GcdStateChangedCallback = base::Callback<void(GcdState state)>;
+
// Sets callback which is called when state of server connection changed.
virtual void AddGcdStateChangedCallback(
const GcdStateChangedCallback& callback) = 0;
@@ -86,10 +105,12 @@
base::Callback<void(const std::string& session_id,
PairingType pairing_type,
const std::vector<uint8_t>& code)>;
+
// Handler should stop displaying pin code.
using PairingEndCallback =
base::Callback<void(const std::string& session_id)>;
// Subscribes to notification about client pairing events.
+
virtual void AddPairingChangedCallbacks(
const PairingBeginCallback& begin_callback,
const PairingEndCallback& end_callback) = 0;
diff --git a/libweave/include/weave/test/mock_commands.h b/libweave/include/weave/test/mock_commands.h
deleted file mode 100644
index 9bae29c..0000000
--- a/libweave/include/weave/test/mock_commands.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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_TEST_MOCK_COMMANDS_H_
-#define LIBWEAVE_INCLUDE_WEAVE_TEST_MOCK_COMMANDS_H_
-
-#include <weave/commands.h>
-
-#include <string>
-
-#include <gmock/gmock.h>
-
-namespace weave {
-namespace test {
-
-class MockCommands : public Commands {
- public:
- ~MockCommands() override = default;
-
- MOCK_METHOD1(AddCommandAddedCallback, void(const CommandCallback&));
- MOCK_METHOD1(AddCommandRemovedCallback, void(const CommandCallback&));
- MOCK_METHOD3(AddCommand,
- bool(const base::DictionaryValue&, std::string*, ErrorPtr*));
- MOCK_METHOD1(FindCommand, Command*(const std::string&));
-};
-
-} // namespace test
-} // namespace weave
-
-#endif // LIBWEAVE_INCLUDE_WEAVE_TEST_MOCK_COMMANDS_H_
diff --git a/libweave/include/weave/test/mock_device.h b/libweave/include/weave/test/mock_device.h
new file mode 100644
index 0000000..44298bb
--- /dev/null
+++ b/libweave/include/weave/test/mock_device.h
@@ -0,0 +1,53 @@
+// 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_TEST_MOCK_DEVICE_H_
+#define LIBWEAVE_INCLUDE_WEAVE_TEST_MOCK_DEVICE_H_
+
+#include <weave/device.h>
+
+#include <string>
+
+#include <gmock/gmock.h>
+
+namespace weave {
+namespace test {
+
+class MockDevice : public Device {
+ public:
+ ~MockDevice() override = default;
+
+ MOCK_CONST_METHOD0(GetSettings, const Settings&());
+ MOCK_METHOD1(AddSettingsChangedCallback,
+ void(const SettingsChangedCallback& callback));
+ MOCK_METHOD1(AddCommandAddedCallback, void(const CommandCallback&));
+ MOCK_METHOD1(AddCommandRemovedCallback, void(const CommandCallback&));
+ MOCK_METHOD3(AddCommand,
+ bool(const base::DictionaryValue&, std::string*, ErrorPtr*));
+ MOCK_METHOD1(FindCommand, Command*(const std::string&));
+ MOCK_METHOD1(AddStateChangedCallback, void(const base::Closure& callback));
+ MOCK_CONST_METHOD1(GetStateProperty,
+ std::unique_ptr<base::Value>(const std::string& name));
+ MOCK_METHOD3(SetStateProperty,
+ bool(const std::string& name,
+ const base::Value& value,
+ ErrorPtr* error));
+ MOCK_METHOD2(SetStateProperties,
+ bool(const base::DictionaryValue& property_set,
+ ErrorPtr* error));
+ MOCK_CONST_METHOD0(GetState, std::unique_ptr<base::DictionaryValue>());
+ MOCK_CONST_METHOD0(GetGcdState, GcdState());
+ MOCK_METHOD1(AddGcdStateChangedCallback,
+ void(const GcdStateChangedCallback& callback));
+ MOCK_METHOD2(Register,
+ std::string(const std::string& ticket_id, ErrorPtr* error));
+ MOCK_METHOD2(AddPairingChangedCallbacks,
+ void(const PairingBeginCallback& begin_callback,
+ const PairingEndCallback& end_callback));
+};
+
+} // namespace test
+} // namespace weave
+
+#endif // LIBWEAVE_INCLUDE_WEAVE_TEST_MOCK_DEVICE_H_
diff --git a/libweave/src/commands/command_definition.h b/libweave/src/commands/command_definition.h
index 305e8f5..2c5dd77 100644
--- a/libweave/src/commands/command_definition.h
+++ b/libweave/src/commands/command_definition.h
@@ -9,7 +9,6 @@
#include <string>
#include <base/macros.h>
-#include <weave/commands.h>
#include "src/commands/object_schema.h"
diff --git a/libweave/src/commands/command_manager.cc b/libweave/src/commands/command_manager.cc
index 11a1c40..60b3d1c 100644
--- a/libweave/src/commands/command_manager.cc
+++ b/libweave/src/commands/command_manager.cc
@@ -175,12 +175,13 @@
return true;
}
-void CommandManager::AddCommandAddedCallback(const CommandCallback& callback) {
+void CommandManager::AddCommandAddedCallback(
+ const Device::CommandCallback& callback) {
command_queue_.AddCommandAddedCallback(callback);
}
void CommandManager::AddCommandRemovedCallback(
- const CommandCallback& callback) {
+ const Device::CommandCallback& callback) {
command_queue_.AddCommandRemovedCallback(callback);
}
diff --git a/libweave/src/commands/command_manager.h b/libweave/src/commands/command_manager.h
index 2b2f83d..605f770 100644
--- a/libweave/src/commands/command_manager.h
+++ b/libweave/src/commands/command_manager.h
@@ -12,7 +12,6 @@
#include <base/callback.h>
#include <base/macros.h>
#include <base/memory/weak_ptr.h>
-#include <weave/commands.h>
#include "src/commands/command_dictionary.h"
#include "src/commands/command_queue.h"
@@ -28,19 +27,18 @@
// CommandManager class that will have a list of all the device command
// schemas as well as the live command queue of pending command instances
// dispatched to the device.
-class CommandManager final : public Commands {
+class CommandManager final {
public:
CommandManager();
- ~CommandManager() override;
+ ~CommandManager();
- // Commands overrides.
bool AddCommand(const base::DictionaryValue& command,
std::string* id,
- ErrorPtr* error) override;
- CommandInstance* FindCommand(const std::string& id) override;
- void AddCommandAddedCallback(const CommandCallback& callback) override;
- void AddCommandRemovedCallback(const CommandCallback& callback) override;
+ ErrorPtr* error);
+ CommandInstance* FindCommand(const std::string& id);
+ void AddCommandAddedCallback(const Device::CommandCallback& callback);
+ void AddCommandRemovedCallback(const Device::CommandCallback& callback);
// Sets callback which is called when command definitions is changed.
void AddCommandDefChanged(const base::Closure& callback);
diff --git a/libweave/src/commands/command_queue.cc b/libweave/src/commands/command_queue.cc
index 46385de..e580048 100644
--- a/libweave/src/commands/command_queue.cc
+++ b/libweave/src/commands/command_queue.cc
@@ -14,7 +14,7 @@
}
void CommandQueue::AddCommandAddedCallback(
- const Commands::CommandCallback& callback) {
+ const Device::CommandCallback& callback) {
on_command_added_.push_back(callback);
// Send all pre-existed commands.
for (const auto& command : map_)
@@ -22,7 +22,7 @@
}
void CommandQueue::AddCommandRemovedCallback(
- const Commands::CommandCallback& callback) {
+ const Device::CommandCallback& callback) {
on_command_removed_.push_back(callback);
}
diff --git a/libweave/src/commands/command_queue.h b/libweave/src/commands/command_queue.h
index 4b2e47c..c3e86d5 100644
--- a/libweave/src/commands/command_queue.h
+++ b/libweave/src/commands/command_queue.h
@@ -15,7 +15,7 @@
#include <base/callback.h>
#include <base/macros.h>
#include <base/time/time.h>
-#include <weave/commands.h>
+#include <weave/device.h>
#include "src/commands/command_instance.h"
@@ -26,10 +26,10 @@
CommandQueue() = default;
// Adds notifications callback for a new command is added to the queue.
- void AddCommandAddedCallback(const Commands::CommandCallback& callback);
+ void AddCommandAddedCallback(const Device::CommandCallback& callback);
// Adds notifications callback for a command is removed from the queue.
- void AddCommandRemovedCallback(const Commands::CommandCallback& callback);
+ void AddCommandRemovedCallback(const Device::CommandCallback& callback);
// Checks if the command queue is empty.
bool IsEmpty() const { return map_.empty(); }
@@ -75,7 +75,7 @@
// Queue of commands to be removed.
std::queue<std::pair<base::Time, std::string>> remove_queue_;
- using CallbackList = std::vector<Commands::CommandCallback>;
+ using CallbackList = std::vector<Device::CommandCallback>;
CallbackList on_command_added_;
CallbackList on_command_removed_;
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 79ef5d1..aedd425 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -59,7 +59,7 @@
DeviceManager::~DeviceManager() {}
-const Settings& DeviceManager::GetSettings() {
+const Settings& DeviceManager::GetSettings() const {
return device_info_->GetSettings();
}
@@ -68,10 +68,6 @@
device_info_->GetMutableConfig()->AddOnChangedCallback(callback);
}
-Commands* DeviceManager::GetCommands() {
- return command_manager_.get();
-}
-
Config* DeviceManager::GetConfig() {
return device_info_->GetMutableConfig();
}
@@ -101,6 +97,24 @@
state_manager_->AddChangedCallback(callback);
}
+bool DeviceManager::AddCommand(const base::DictionaryValue& command,
+ std::string* id,
+ ErrorPtr* error) {
+ return command_manager_->AddCommand(command, id, error);
+}
+
+Command* DeviceManager::FindCommand(const std::string& id) {
+ return command_manager_->FindCommand(id);
+}
+
+void DeviceManager::AddCommandAddedCallback(const CommandCallback& callback) {
+ return command_manager_->AddCommandAddedCallback(callback);
+}
+
+void DeviceManager::AddCommandRemovedCallback(const CommandCallback& callback) {
+ return command_manager_->AddCommandRemovedCallback(callback);
+}
+
bool DeviceManager::SetStateProperties(
const base::DictionaryValue& property_set,
ErrorPtr* error) {
diff --git a/libweave/src/device_manager.h b/libweave/src/device_manager.h
index fbf2871..d28d0b0 100644
--- a/libweave/src/device_manager.h
+++ b/libweave/src/device_manager.h
@@ -34,11 +34,15 @@
~DeviceManager() override;
// Device implementation.
- const Settings& GetSettings() override;
+ const Settings& GetSettings() const override;
void AddSettingsChangedCallback(
const SettingsChangedCallback& callback) override;
- Commands* GetCommands() override;
-
+ bool AddCommand(const base::DictionaryValue& command,
+ std::string* id,
+ ErrorPtr* error) override;
+ Command* FindCommand(const std::string& id) override;
+ void AddCommandAddedCallback(const CommandCallback& callback) override;
+ void AddCommandRemovedCallback(const CommandCallback& callback) override;
void AddStateChangedCallback(const base::Closure& callback) override;
bool SetStateProperties(const base::DictionaryValue& property_set,
ErrorPtr* error) override;
@@ -48,13 +52,10 @@
const base::Value& value,
ErrorPtr* error) override;
std::unique_ptr<base::DictionaryValue> GetState() const override;
-
std::string Register(const std::string& ticket_id, ErrorPtr* error) override;
-
GcdState GetGcdState() const override;
void AddGcdStateChangedCallback(
const GcdStateChangedCallback& callback) override;
-
void AddPairingChangedCallbacks(
const PairingBeginCallback& begin_callback,
const PairingEndCallback& end_callback) override;
diff --git a/libweave/src/weave_unittest.cc b/libweave/src/weave_unittest.cc
index 9ab0a2a..ac6f9b8 100644
--- a/libweave/src/weave_unittest.cc
+++ b/libweave/src/weave_unittest.cc
@@ -14,7 +14,7 @@
#include <weave/provider/test/mock_http_server.h>
#include <weave/provider/test/mock_network.h>
#include <weave/provider/test/mock_wifi.h>
-#include <weave/test/mock_commands.h>
+#include <weave/test/mock_device.h>
#include <weave/test/unittest_utils.h>
#include "src/bind_lambda.h"
@@ -270,6 +270,12 @@
std::unique_ptr<weave::Device> device_;
};
+TEST_F(WeaveTest, MockDevice) {
+ // Test checks if mock implements entire interface and mock can be
+ // instantiated.
+ test::MockDevice device;
+}
+
TEST_F(WeaveTest, StartMinimal) {
InitConfigStore();
device_ = weave::Device::Create(&config_store_, &task_runner_, &http_client_,