blob: 5808f88be34b53289f67a384c281ee6971c1065c [file] [log] [blame]
// Copyright 2015 The Chromium 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 SERVICES_UI_LAUNCHER_VIEW_TREE_IMPL_H_
#define SERVICES_UI_LAUNCHER_VIEW_TREE_IMPL_H_
#include "base/callback.h"
#include "base/macros.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/services/gfx/composition/interfaces/compositor.mojom.h"
#include "mojo/services/native_viewport/interfaces/native_viewport.mojom.h"
#include "mojo/services/ui/input/interfaces/input_dispatcher.mojom.h"
#include "mojo/services/ui/views/interfaces/view_manager.mojom.h"
namespace launcher {
class LauncherViewTree : public mojo::ui::ViewTreeListener {
public:
LauncherViewTree(mojo::gfx::composition::Compositor* compositor,
mojo::ui::ViewManager* view_manager,
mojo::ContextProviderPtr context_provider,
mojo::ViewportMetricsPtr viewport_metrics,
const base::Closure& shutdown_callback);
~LauncherViewTree() override;
void SetRoot(mojo::ui::ViewOwnerPtr owner);
void SetViewportMetrics(mojo::ViewportMetricsPtr viewport_metrics);
void DispatchEvent(mojo::EventPtr event);
private:
// |ViewTree|:
void OnLayout(const OnLayoutCallback& callback) override;
void OnRootUnavailable(uint32_t root_key,
const OnRootUnavailableCallback& callback) override;
void OnRendererDied(const OnRendererDiedCallback& callback) override;
void OnViewTreeConnectionError();
void OnInputDispatcherConnectionError();
void LayoutRoot();
void OnLayoutResult(mojo::ui::ViewLayoutInfoPtr info);
void Shutdown();
mojo::gfx::composition::Compositor* compositor_;
mojo::ui::ViewManager* view_manager_;
mojo::ContextProviderPtr context_provider_;
mojo::ViewportMetricsPtr viewport_metrics_;
base::Closure shutdown_callback_;
mojo::Binding<mojo::ui::ViewTreeListener> view_tree_listener_binding_;
;
mojo::ui::ViewTreePtr view_tree_;
mojo::ui::InputDispatcherPtr input_dispatcher_;
uint32_t root_key_ = 0u;
bool root_was_set_ = false;
mojo::ui::ViewLayoutInfoPtr root_layout_info_;
DISALLOW_COPY_AND_ASSIGN(LauncherViewTree);
};
} // namespace launcher
#endif // SERVICES_UI_LAUNCHER_VIEW_TREE_IMPL_H_