Chinmay Garde d9d6c2e825 Remove unused argument on Animator, Engine and PlatformView delegates. (flutter/engine#6007)
When these delegate methods were initially added, it was expected that a single
shell would be able to own mutliple platform views, engines and animators. This
plan was abandoned in favor of creating multiple shells with their own platform
views, engines, etc.. The arguments were meant to ease the disambiguate the
instances of the variaous objects managed by the shell. This is no longer
necessary.
2018-08-13 16:16:10 -07:00

131 lines
4.0 KiB
C++

// 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 COMMON_PLATFORM_VIEW_H_
#define COMMON_PLATFORM_VIEW_H_
#include <memory>
#include "flutter/common/task_runners.h"
#include "flutter/flow/texture.h"
#include "flutter/fml/macros.h"
#include "flutter/fml/memory/weak_ptr.h"
#include "flutter/lib/ui/semantics/custom_accessibility_action.h"
#include "flutter/lib/ui/semantics/semantics_node.h"
#include "flutter/lib/ui/window/platform_message.h"
#include "flutter/lib/ui/window/pointer_data_packet.h"
#include "flutter/lib/ui/window/viewport_metrics.h"
#include "flutter/shell/common/surface.h"
#include "flutter/shell/common/vsync_waiter.h"
#include "third_party/skia/include/core/SkSize.h"
#include "third_party/skia/include/gpu/GrContext.h"
namespace shell {
class Shell;
class PlatformView {
public:
class Delegate {
public:
virtual void OnPlatformViewCreated(std::unique_ptr<Surface> surface) = 0;
virtual void OnPlatformViewDestroyed() = 0;
virtual void OnPlatformViewSetNextFrameCallback(fml::closure closure) = 0;
virtual void OnPlatformViewSetViewportMetrics(
const blink::ViewportMetrics& metrics) = 0;
virtual void OnPlatformViewDispatchPlatformMessage(
fml::RefPtr<blink::PlatformMessage> message) = 0;
virtual void OnPlatformViewDispatchPointerDataPacket(
std::unique_ptr<blink::PointerDataPacket> packet) = 0;
virtual void OnPlatformViewDispatchSemanticsAction(
int32_t id,
blink::SemanticsAction action,
std::vector<uint8_t> args) = 0;
virtual void OnPlatformViewSetSemanticsEnabled(bool enabled) = 0;
virtual void OnPlatformViewSetAccessibilityFeatures(int32_t flags) = 0;
virtual void OnPlatformViewRegisterTexture(
std::shared_ptr<flow::Texture> texture) = 0;
virtual void OnPlatformViewUnregisterTexture(int64_t texture_id) = 0;
virtual void OnPlatformViewMarkTextureFrameAvailable(
int64_t texture_id) = 0;
};
explicit PlatformView(Delegate& delegate, blink::TaskRunners task_runners);
virtual ~PlatformView();
virtual std::unique_ptr<VsyncWaiter> CreateVSyncWaiter();
void DispatchPlatformMessage(fml::RefPtr<blink::PlatformMessage> message);
void DispatchSemanticsAction(int32_t id,
blink::SemanticsAction action,
std::vector<uint8_t> args);
virtual void SetSemanticsEnabled(bool enabled);
virtual void SetAccessibilityFeatures(int32_t flags);
void SetViewportMetrics(const blink::ViewportMetrics& metrics);
void NotifyCreated();
virtual void NotifyDestroyed();
// Unlike all other methods on the platform view, this one may be called on a
// non-platform task runner.
virtual sk_sp<GrContext> CreateResourceContext() const;
fml::WeakPtr<PlatformView> GetWeakPtr() const;
virtual void UpdateSemantics(blink::SemanticsNodeUpdates updates,
blink::CustomAccessibilityActionUpdates actions);
virtual void HandlePlatformMessage(
fml::RefPtr<blink::PlatformMessage> message);
virtual void OnPreEngineRestart() const;
void SetNextFrameCallback(fml::closure closure);
void DispatchPointerDataPacket(
std::unique_ptr<blink::PointerDataPacket> packet);
// Called once per texture, on the platform thread.
void RegisterTexture(std::shared_ptr<flow::Texture> texture);
// Called once per texture, on the platform thread.
void UnregisterTexture(int64_t texture_id);
// Called once per texture update (e.g. video frame), on the platform thread.
void MarkTextureFrameAvailable(int64_t texture_id);
protected:
PlatformView::Delegate& delegate_;
const blink::TaskRunners task_runners_;
SkISize size_;
fml::WeakPtrFactory<PlatformView> weak_factory_;
virtual std::unique_ptr<Surface> CreateRenderingSurface();
private:
FML_DISALLOW_COPY_AND_ASSIGN(PlatformView);
};
} // namespace shell
#endif // COMMON_PLATFORM_VIEW_H_