Remove AddOnStateChangedCallback from HTTP server
Implementation should have http server running before creating
weave::Device
BUG:24267885
Change-Id: Ia53cd3f669eea80120a5e8673fe8e549a2c42ccf
Reviewed-on: https://weave-review.googlesource.com/1271
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/libweave/examples/ubuntu/event_http_server.cc b/libweave/examples/ubuntu/event_http_server.cc
index 9c0dc78..4a7156a 100644
--- a/libweave/examples/ubuntu/event_http_server.cc
+++ b/libweave/examples/ubuntu/event_http_server.cc
@@ -199,11 +199,6 @@
evhttp_send_reply(req, status_code, "None", buf.get());
}
-void HttpServerImpl::AddOnStateChangedCallback(
- const OnStateChangedCallback& callback) {
- callback.Run(*this);
-}
-
void HttpServerImpl::AddRequestHandler(const std::string& path_prefix,
const OnRequestCallback& callback) {
handlers_.emplace(path_prefix, callback);
diff --git a/libweave/examples/ubuntu/event_http_server.h b/libweave/examples/ubuntu/event_http_server.h
index 1005edc..82c51dd 100644
--- a/libweave/examples/ubuntu/event_http_server.h
+++ b/libweave/examples/ubuntu/event_http_server.h
@@ -28,8 +28,6 @@
explicit HttpServerImpl(EventTaskRunner* task_runner);
- void AddOnStateChangedCallback(
- const OnStateChangedCallback& callback) override;
void AddRequestHandler(const std::string& path_prefix,
const OnRequestCallback& callback) override;
uint16_t GetHttpPort() const override;
diff --git a/libweave/include/weave/provider/http_server.h b/libweave/include/weave/provider/http_server.h
index 1d4ab1e..44c3e1d 100644
--- a/libweave/include/weave/provider/http_server.h
+++ b/libweave/include/weave/provider/http_server.h
@@ -27,8 +27,6 @@
virtual ~Request() = default;
};
- using OnStateChangedCallback = base::Callback<void(const HttpServer& server)>;
-
using OnReplyCallback = base::Callback<void(int status_code,
const std::string& data,
const std::string& mime_type)>;
@@ -37,10 +35,6 @@
base::Callback<void(const Request& request,
const OnReplyCallback& callback)>;
- // Adds notification callback for server started/stopped serving requests.
- virtual void AddOnStateChangedCallback(
- const OnStateChangedCallback& callback) = 0;
-
// Adds callback called on new http/https requests with the given path prefix.
virtual void AddRequestHandler(const std::string& path_prefix,
const OnRequestCallback& callback) = 0;
diff --git a/libweave/include/weave/provider/test/mock_http_server.h b/libweave/include/weave/provider/test/mock_http_server.h
index 3beb4ae..c6fc755 100644
--- a/libweave/include/weave/provider/test/mock_http_server.h
+++ b/libweave/include/weave/provider/test/mock_http_server.h
@@ -18,7 +18,6 @@
class MockHttpServer : public HttpServer {
public:
- MOCK_METHOD1(AddOnStateChangedCallback, void(const OnStateChangedCallback&));
MOCK_METHOD2(AddRequestHandler,
void(const std::string&, const OnRequestCallback&));
diff --git a/libweave/src/privet/device_delegate.cc b/libweave/src/privet/device_delegate.cc
index 3b2e247..00c1075 100644
--- a/libweave/src/privet/device_delegate.cc
+++ b/libweave/src/privet/device_delegate.cc
@@ -15,7 +15,8 @@
class DeviceDelegateImpl : public DeviceDelegate {
public:
- DeviceDelegateImpl() = default;
+ DeviceDelegateImpl(uint16_t http_port, uint16_t https_port)
+ : http_port_{http_port}, https_port_{https_port} {}
~DeviceDelegateImpl() override = default;
std::pair<uint16_t, uint16_t> GetHttpEnpoint() const override {
@@ -45,8 +46,11 @@
DeviceDelegate::~DeviceDelegate() {}
// static
-std::unique_ptr<DeviceDelegate> DeviceDelegate::CreateDefault() {
- return std::unique_ptr<DeviceDelegate>(new DeviceDelegateImpl());
+std::unique_ptr<DeviceDelegate> DeviceDelegate::CreateDefault(
+ uint16_t http_port,
+ uint16_t https_port) {
+ return std::unique_ptr<DeviceDelegate>(
+ new DeviceDelegateImpl(http_port, https_port));
}
} // namespace privet
diff --git a/libweave/src/privet/device_delegate.h b/libweave/src/privet/device_delegate.h
index 12996d7..5d5402a 100644
--- a/libweave/src/privet/device_delegate.h
+++ b/libweave/src/privet/device_delegate.h
@@ -38,7 +38,8 @@
virtual void SetHttpsPort(uint16_t port) = 0;
// Create default instance.
- static std::unique_ptr<DeviceDelegate> CreateDefault();
+ static std::unique_ptr<DeviceDelegate> CreateDefault(uint16_t http_port,
+ uint16_t https_port);
};
} // namespace privet
diff --git a/libweave/src/privet/privet_manager.cc b/libweave/src/privet/privet_manager.cc
index ac47c6c..10b914a 100644
--- a/libweave/src/privet/privet_manager.cc
+++ b/libweave/src/privet/privet_manager.cc
@@ -49,13 +49,16 @@
StateManager* state_manager) {
disable_security_ = device->GetSettings().disable_security;
- device_ = DeviceDelegate::CreateDefault();
+ device_ = DeviceDelegate::CreateDefault(http_server->GetHttpPort(),
+ http_server->GetHttpsPort());
cloud_ = CloudDelegate::CreateDefault(task_runner, device, command_manager,
state_manager);
cloud_observer_.Add(cloud_.get());
security_.reset(new SecurityManager(
device->GetSettings().secret, device->GetSettings().pairing_modes,
device->GetSettings().embedded_code, disable_security_, task_runner));
+ security_->SetCertificateFingerprint(
+ http_server->GetHttpsCertificateFingerprint());
if (device->GetSettings().secret.empty()) {
// TODO(vitalybuka): Post all Config::Transaction to avoid following.
task_runner->PostDelayedTask(
@@ -83,8 +86,6 @@
security_.get(),
wifi_bootstrap_manager_.get()));
- http_server->AddOnStateChangedCallback(base::Bind(
- &Manager::OnHttpServerStatusChanged, weak_ptr_factory_.GetWeakPtr()));
http_server->AddRequestHandler("/privet/",
base::Bind(&Manager::PrivetRequestHandler,
weak_ptr_factory_.GetWeakPtr()));
@@ -152,16 +153,6 @@
OnChanged();
}
-void Manager::OnHttpServerStatusChanged(const HttpServer& server) {
- if (device_->GetHttpEnpoint().first != server.GetHttpPort()) {
- device_->SetHttpPort(server.GetHttpPort());
- if (publisher_) // Only HTTP port is published
- publisher_->Update();
- }
- device_->SetHttpsPort(server.GetHttpsPort());
- security_->SetCertificateFingerprint(server.GetHttpsCertificateFingerprint());
-}
-
void Manager::SaveDeviceSecret(Config* config) {
Config::Transaction transaction(config);
transaction.set_secret(security_->GetSecret());
diff --git a/libweave/src/privet/privet_manager.h b/libweave/src/privet/privet_manager.h
index 35fb6f9..db6c6da 100644
--- a/libweave/src/privet/privet_manager.h
+++ b/libweave/src/privet/privet_manager.h
@@ -78,7 +78,6 @@
void OnChanged();
void OnConnectivityChanged();
- void OnHttpServerStatusChanged(const provider::HttpServer& server);
void SaveDeviceSecret(Config* config);
bool disable_security_{false};
diff --git a/libweave/src/weave_unittest.cc b/libweave/src/weave_unittest.cc
index a44101a..b6f9207 100644
--- a/libweave/src/weave_unittest.cc
+++ b/libweave/src/weave_unittest.cc
@@ -207,11 +207,6 @@
const provider::HttpServer::OnRequestCallback& cb) {
http_server_request_cb_.push_back(cb);
}));
- EXPECT_CALL(http_server_, AddOnStateChangedCallback(_))
- .WillRepeatedly(Invoke(
- [this](const provider::HttpServer::OnStateChangedCallback& cb) {
- http_server_changed_cb_.push_back(cb);
- }));
}
void InitDefaultExpectations() {
@@ -232,9 +227,6 @@
device_->AddStateDefinitionsFromJson(kStateDefs);
device_->SetStatePropertiesFromJson(kStateDefaults, nullptr);
- for (const auto& cb : http_server_changed_cb_)
- cb.Run(http_server_);
-
task_runner_.Run();
}
@@ -246,8 +238,6 @@
}
}
- std::vector<provider::HttpServer::OnStateChangedCallback>
- http_server_changed_cb_;
std::vector<provider::HttpServer::OnRequestCallback> http_server_request_cb_;
StrictMock<provider::test::MockConfigStore> config_store_;
@@ -289,9 +279,6 @@
&bluetooth_);
device_->AddCommandDefinitionsFromJson(kCommandDefs);
- for (const auto& cb : http_server_changed_cb_)
- cb.Run(http_server_);
-
task_runner_.Run();
}