blob: 83d5cdc73375b60dd6b0f82b37e479748753881b [file] [log] [blame]
// Copyright 2018 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.
#include "peridot/bin/sessionmgr/story_runner/story_shell_context_impl.h"
#include <fuchsia/modular/cpp/fidl.h>
#include "peridot/bin/sessionmgr/story_runner/story_controller_impl.h"
#include "peridot/bin/sessionmgr/story_runner/story_provider_impl.h"
namespace modular {
namespace {
constexpr char kStoryShellLinkName[] = "story-shell-link";
}; // namespace
StoryShellContextImpl::StoryShellContextImpl(
fidl::StringPtr story_id, StoryProviderImpl* const story_provider_impl,
StoryControllerImpl* const story_controller_impl)
: story_id_(story_id),
story_provider_impl_(story_provider_impl),
story_controller_impl_(story_controller_impl) {}
StoryShellContextImpl::~StoryShellContextImpl() = default;
void StoryShellContextImpl::Connect(
fidl::InterfaceRequest<fuchsia::modular::StoryShellContext> request) {
bindings_.AddBinding(this, std::move(request));
}
void StoryShellContextImpl::GetPresentation(
fidl::InterfaceRequest<fuchsia::ui::policy::Presentation> request) {
story_provider_impl_->GetPresentation(story_id_, std::move(request));
}
void StoryShellContextImpl::WatchVisualState(
fidl::InterfaceHandle<fuchsia::modular::StoryVisualStateWatcher> watcher) {
story_provider_impl_->WatchVisualState(story_id_, std::move(watcher));
}
void StoryShellContextImpl::GetLink(
fidl::InterfaceRequest<fuchsia::modular::Link> request) {
fuchsia::modular::LinkPathPtr link_path = fuchsia::modular::LinkPath::New();
link_path->module_path.resize(0);
// Note: This will never clash with link references for links owned by
// modules, because those will have a non-empty module path.
link_path->link_name = kStoryShellLinkName;
story_controller_impl_->ConnectLinkPath(std::move(link_path),
std::move(request));
}
void StoryShellContextImpl::RequestView(std::string surface_id) {}
void StoryShellContextImpl::OnSurfaceOffScreen(std::string surface_id) {}
} // namespace modular