blob: b79971275ae0f8eff11f63d43355a42fee4de606 [file] [log] [blame]
// Copyright 2016 The Fuchsia 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 PERIDOT_LIB_TESTING_STORY_PROVIDER_MOCK_H_
#define PERIDOT_LIB_TESTING_STORY_PROVIDER_MOCK_H_
#include <string>
#include <fuchsia/modular/cpp/fidl.h>
#include <lib/fidl/cpp/binding_set.h>
#include <lib/fidl/cpp/clone.h>
#include <lib/fidl/cpp/interface_ptr_set.h>
#include "peridot/lib/testing/story_controller_mock.h"
namespace modular {
class StoryProviderMock : public fuchsia::modular::StoryProvider {
public:
// Allows notification of watchers.
void NotifyStoryChanged(
fuchsia::modular::StoryInfo story_info,
fuchsia::modular::StoryState story_state,
fuchsia::modular::StoryVisibilityState story_visibility_state) {
for (const auto& watcher : watchers_.ptrs()) {
fuchsia::modular::StoryInfo story_info_clone;
fidl::Clone(story_info, &story_info_clone);
(*watcher)->OnChange(std::move(story_info_clone), story_state,
story_visibility_state);
}
}
const StoryControllerMock& story_controller() const {
return controller_mock_;
}
const std::string& last_created_story() const { return last_created_story_; }
const std::string& last_created_kind_of_story() const {
return last_created_kind_of_proto_story_;
}
const std::string& deleted_story() const { return deleted_story_; }
private:
// |fuchsia::modular::StoryProvider|
void GetStories(
fidl::InterfaceHandle<fuchsia::modular::StoryProviderWatcher> watcher,
GetStoriesCallback callback) override {
std::vector<fuchsia::modular::StoryInfo> stories;
callback(std::move(stories));
}
// |fuchsia::modular::StoryProvider|
void Watch(fidl::InterfaceHandle<fuchsia::modular::StoryProviderWatcher>
watcher) override {
watchers_.AddInterfacePtr(watcher.Bind());
}
// |fuchsia::modular::StoryProvider|
void WatchActivity(
fidl::InterfaceHandle<fuchsia::modular::StoryActivityWatcher> watcher)
override {
activity_watchers_.AddInterfacePtr(watcher.Bind());
}
// |fuchsia::modular::StoryProvider|
void GetStoryInfo(std::string story_id,
GetStoryInfoCallback callback) override {
callback(nullptr);
}
// |fuchsia::modular::StoryProvider|
void GetController(std::string story_id,
fidl::InterfaceRequest<fuchsia::modular::StoryController>
story) override {
binding_set_.AddBinding(&controller_mock_, std::move(story));
}
// |fuchsia::modular::StoryProvider|
void PreviousStories(PreviousStoriesCallback callback) override {
callback(std::vector<fuchsia::modular::StoryInfo>());
}
std::string last_created_story_;
std::string last_created_kind_of_proto_story_;
std::string deleted_story_;
StoryControllerMock controller_mock_;
fidl::BindingSet<fuchsia::modular::StoryController> binding_set_;
fidl::InterfacePtrSet<fuchsia::modular::StoryProviderWatcher> watchers_;
fidl::InterfacePtrSet<fuchsia::modular::StoryActivityWatcher>
activity_watchers_;
};
} // namespace modular
#endif // PERIDOT_LIB_TESTING_STORY_PROVIDER_MOCK_H_