Index: cc/test/layer_tree_host_remote_for_testing.cc |
diff --git a/cc/test/layer_tree_host_remote_for_testing.cc b/cc/test/layer_tree_host_remote_for_testing.cc |
deleted file mode 100644 |
index 263cd3ac544c3b79319f236d4b5a8f198a0669d7..0000000000000000000000000000000000000000 |
--- a/cc/test/layer_tree_host_remote_for_testing.cc |
+++ /dev/null |
@@ -1,313 +0,0 @@ |
-// Copyright 2016 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. |
- |
-#include "cc/test/layer_tree_host_remote_for_testing.h" |
- |
-#include "base/memory/ptr_util.h" |
-#include "cc/animation/animation_host.h" |
-#include "cc/blimp/compositor_proto_state.h" |
-#include "cc/blimp/compositor_state_deserializer.h" |
-#include "cc/blimp/remote_compositor_bridge.h" |
-#include "cc/layers/layer.h" |
-#include "cc/proto/compositor_message.pb.h" |
-#include "cc/test/fake_image_serialization_processor.h" |
-#include "cc/test/remote_client_layer_factory.h" |
-#include "cc/trees/layer_tree_host_client.h" |
-#include "cc/trees/layer_tree_host_in_process.h" |
-#include "cc/trees/mutator_host.h" |
- |
-namespace cc { |
- |
-class LayerTreeHostRemoteForTesting::RemoteCompositorBridgeImpl |
- : public RemoteCompositorBridge { |
- public: |
- RemoteCompositorBridgeImpl( |
- scoped_refptr<base::SingleThreadTaskRunner> compositor_main_task_runner) |
- : RemoteCompositorBridge(std::move(compositor_main_task_runner)) {} |
- |
- ~RemoteCompositorBridgeImpl() override = default; |
- |
- void SetRemoteHost(LayerTreeHostRemoteForTesting* layer_tree_host_remote) { |
- DCHECK(layer_tree_host_remote); |
- layer_tree_host_remote_ = layer_tree_host_remote; |
- } |
- |
- // RemoteCompositorBridge implementation. |
- void BindToClient(RemoteCompositorBridgeClient* client) override { |
- DCHECK(!client_); |
- client_ = client; |
- } |
- void ScheduleMainFrame() override { |
- layer_tree_host_remote_->RemoteHostNeedsMainFrame(); |
- } |
- void ProcessCompositorStateUpdate( |
- std::unique_ptr<CompositorProtoState> compositor_proto_state) override { |
- layer_tree_host_remote_->ProcessRemoteCompositorUpdate( |
- std::move(compositor_proto_state)); |
- } |
- |
- private: |
- LayerTreeHostRemoteForTesting* layer_tree_host_remote_ = nullptr; |
- RemoteCompositorBridgeClient* client_ = nullptr; |
-}; |
- |
-class LayerTreeHostRemoteForTesting::LayerTreeHostInProcessClient |
- : public LayerTreeHostClient { |
- public: |
- LayerTreeHostInProcessClient( |
- LayerTreeHostRemoteForTesting* layer_tree_host_remote) |
- : layer_tree_host_remote_(layer_tree_host_remote) {} |
- |
- ~LayerTreeHostInProcessClient() override = default; |
- |
- void WillBeginMainFrame() override {} |
- void BeginMainFrame(const BeginFrameArgs& args) override { |
- layer_tree_host_remote_->BeginRemoteMainFrame(); |
- } |
- void BeginMainFrameNotExpectedSoon() override {} |
- void DidBeginMainFrame() override {} |
- void UpdateLayerTreeHost() override {} |
- void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, |
- const gfx::Vector2dF& outer_delta, |
- const gfx::Vector2dF& elastic_overscroll_delta, |
- float page_scale, |
- float top_controls_delta) override { |
- layer_tree_host_remote_->compositor_state_deserializer_ |
- ->ApplyViewportDeltas(inner_delta, outer_delta, |
- elastic_overscroll_delta, page_scale, |
- top_controls_delta); |
- } |
- void RequestNewCompositorFrameSink() override { |
- layer_tree_host_remote_->client()->RequestNewCompositorFrameSink(); |
- } |
- void DidInitializeCompositorFrameSink() override { |
- layer_tree_host_remote_->client()->DidInitializeCompositorFrameSink(); |
- } |
- void DidFailToInitializeCompositorFrameSink() override { |
- layer_tree_host_remote_->client()->DidFailToInitializeCompositorFrameSink(); |
- } |
- void WillCommit() override {} |
- void DidCommit() override {} |
- void DidCommitAndDrawFrame() override { |
- layer_tree_host_remote_->client()->DidCommitAndDrawFrame(); |
- } |
- void DidReceiveCompositorFrameAck() override { |
- layer_tree_host_remote_->client()->DidReceiveCompositorFrameAck(); |
- } |
- void DidCompletePageScaleAnimation() override { |
- NOTREACHED() << "The remote mode doesn't support sending animations"; |
- } |
- |
- private: |
- LayerTreeHostRemoteForTesting* layer_tree_host_remote_; |
-}; |
- |
-// static |
-std::unique_ptr<RemoteCompositorBridge> |
-LayerTreeHostRemoteForTesting::CreateRemoteCompositorBridge( |
- scoped_refptr<base::SingleThreadTaskRunner> main_task_runner) { |
- return base::MakeUnique<RemoteCompositorBridgeImpl>( |
- std::move(main_task_runner)); |
-} |
- |
-// static |
-std::unique_ptr<LayerTreeHostRemoteForTesting> |
-LayerTreeHostRemoteForTesting::Create( |
- LayerTreeHostClient* client, |
- MutatorHost* mutator_host, |
- LayerTreeSettings const* settings, |
- TaskGraphRunner* task_graph_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { |
- std::unique_ptr<FakeImageSerializationProcessor> |
- image_serialization_processor = |
- base::MakeUnique<FakeImageSerializationProcessor>(); |
- |
- LayerTreeHostRemote::InitParams params; |
- params.client = client; |
- params.main_task_runner = main_task_runner; |
- params.mutator_host = mutator_host; |
- params.remote_compositor_bridge = |
- CreateRemoteCompositorBridge(main_task_runner); |
- params.engine_picture_cache = |
- image_serialization_processor->CreateEnginePictureCache(); |
- params.settings = settings; |
- |
- std::unique_ptr<LayerTreeHostRemoteForTesting> layer_tree_host = |
- base::WrapUnique(new LayerTreeHostRemoteForTesting(¶ms)); |
- layer_tree_host->Initialize(task_graph_runner, main_task_runner, |
- impl_task_runner, |
- std::move(image_serialization_processor)); |
- return layer_tree_host; |
-} |
- |
-LayerTreeHostRemoteForTesting::LayerTreeHostRemoteForTesting(InitParams* params) |
- : LayerTreeHostRemote(params), |
- layer_tree_host_in_process_client_( |
- base::MakeUnique<LayerTreeHostInProcessClient>(this)) {} |
- |
-LayerTreeHostRemoteForTesting::~LayerTreeHostRemoteForTesting() { |
- animation_host_->SetMutatorHostClient(nullptr); |
- compositor_state_deserializer_ = nullptr; |
- layer_tree_host_in_process_ = nullptr; |
-} |
- |
-void LayerTreeHostRemoteForTesting::SetVisible(bool visible) { |
- LayerTreeHostRemote::SetVisible(visible); |
- |
- // We need to tell the InProcessHost about visibility changes as well. |
- layer_tree_host_in_process_->SetVisible(visible); |
-} |
- |
-void LayerTreeHostRemoteForTesting::SetCompositorFrameSink( |
- std::unique_ptr<CompositorFrameSink> compositor_frame_sink) { |
- // Pass through to the InProcessHost since this should be called only in |
- // response to a request made by it. |
- layer_tree_host_in_process_->SetCompositorFrameSink( |
- std::move(compositor_frame_sink)); |
-} |
- |
-std::unique_ptr<CompositorFrameSink> |
-LayerTreeHostRemoteForTesting::ReleaseCompositorFrameSink() { |
- // Pass through to the InProcessHost since that holds the CompositorFrameSink. |
- return layer_tree_host_in_process_->ReleaseCompositorFrameSink(); |
-} |
- |
-void LayerTreeHostRemoteForTesting::SetNeedsRedrawRect( |
- const gfx::Rect& damage_rect) { |
- // Draw requests pass through to the InProcessHost. |
- layer_tree_host_in_process_->SetNeedsRedrawRect(damage_rect); |
-} |
- |
-void LayerTreeHostRemoteForTesting::SetNextCommitForcesRedraw() { |
- // Draw requests pass through to the InProcessHost. |
- layer_tree_host_in_process_->SetNextCommitForcesRedraw(); |
-} |
- |
-void LayerTreeHostRemoteForTesting::NotifyInputThrottledUntilCommit() { |
- // Pass through because the InProcessHost has the input handler. |
- layer_tree_host_in_process_->NotifyInputThrottledUntilCommit(); |
-} |
- |
-const base::WeakPtr<InputHandler>& |
-LayerTreeHostRemoteForTesting::GetInputHandler() const { |
- return layer_tree_host_in_process_->GetInputHandler(); |
-} |
- |
-void LayerTreeHostRemoteForTesting::Initialize( |
- TaskGraphRunner* task_graph_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, |
- std::unique_ptr<FakeImageSerializationProcessor> |
- image_serialization_processor) { |
- image_serialization_processor_ = std::move(image_serialization_processor); |
- RemoteCompositorBridgeImpl* remote_compositor_bridge_impl = |
- static_cast<RemoteCompositorBridgeImpl*>(remote_compositor_bridge()); |
- remote_compositor_bridge_impl->SetRemoteHost(this); |
- |
- animation_host_ = AnimationHost::CreateForTesting(ThreadInstance::MAIN); |
- layer_tree_host_in_process_ = CreateLayerTreeHostInProcess( |
- layer_tree_host_in_process_client_.get(), task_graph_runner, |
- GetSettings(), main_task_runner, impl_task_runner, animation_host_.get()); |
- |
- compositor_state_deserializer_ = |
- base::MakeUnique<CompositorStateDeserializer>( |
- layer_tree_host_in_process_.get(), |
- image_serialization_processor_->CreateClientPictureCache(), this); |
- |
- // Override the LayerFactory since a lot of tests rely on the fact that Layers |
- // and LayerImpls have matching ids. |
- compositor_state_deserializer_->SetLayerFactoryForTesting( |
- base::MakeUnique<RemoteClientLayerFactory>()); |
- |
- // Override the TaskRunnerProvider since tests may rely on accessing the impl |
- // task runner using it. |
- SetTaskRunnerProviderForTesting( |
- TaskRunnerProvider::Create(main_task_runner, impl_task_runner)); |
-} |
- |
-std::unique_ptr<LayerTreeHostInProcess> |
-LayerTreeHostRemoteForTesting::CreateLayerTreeHostInProcess( |
- LayerTreeHostClient* client, |
- TaskGraphRunner* task_graph_runner, |
- const LayerTreeSettings& settings, |
- scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, |
- MutatorHost* mutator_host) { |
- LayerTreeHostInProcess::InitParams params; |
- |
- params.client = client; |
- params.task_graph_runner = task_graph_runner; |
- params.settings = &settings; |
- params.main_task_runner = main_task_runner; |
- params.mutator_host = mutator_host; |
- |
- return LayerTreeHostInProcess::CreateThreaded(impl_task_runner, ¶ms); |
-} |
- |
-void LayerTreeHostRemoteForTesting::DidUpdateLocalState() { |
- client_state_dirty_ = true; |
-} |
- |
-void LayerTreeHostRemoteForTesting::DispatchDrawAndSubmitCallbacks() { |
- // Don't dispatch callbacks right after the commit on the remote host. Since |
- // tests rely on CompositorFrames being swapped on the CompositorFrameSink, |
- // we wait for these callbacks from the LayerTreeHostInProcess. |
-} |
- |
-void LayerTreeHostRemoteForTesting::RemoteHostNeedsMainFrame() { |
- layer_tree_host_in_process_->SetNeedsAnimate(); |
-} |
- |
-void LayerTreeHostRemoteForTesting::BeginRemoteMainFrame() { |
- // Send scroll/scale updates first if modified on the impl thread. |
- if (client_state_dirty_) { |
- client_state_dirty_ = false; |
- proto::ClientStateUpdate client_state_update; |
- compositor_state_deserializer_->PullClientStateUpdate(&client_state_update); |
- ApplyStateUpdateFromClient(client_state_update); |
- |
- // Tell the host on the client that the updates were applied to the state |
- // on the remote host, in case the main frame on the remote host is aborted. |
- compositor_state_deserializer_->DidApplyStateUpdatesOnEngine(); |
- } |
- |
- BeginMainFrame(); |
-} |
- |
-void LayerTreeHostRemoteForTesting::ProcessRemoteCompositorUpdate( |
- std::unique_ptr<CompositorProtoState> compositor_proto_state) { |
- DCHECK(layer_tree_host_in_process_->CommitRequested()); |
- |
- // Deserialize the update from the remote host into client side LTH in |
- // process. This bypasses the network layer. |
- const proto::LayerTreeHost& layer_tree_host_proto = |
- compositor_proto_state->compositor_message->layer_tree_host(); |
- compositor_state_deserializer_->DeserializeCompositorUpdate( |
- layer_tree_host_proto); |
- |
- const proto::LayerUpdate& layer_updates = |
- compositor_proto_state->compositor_message->layer_tree_host() |
- .layer_updates(); |
- for (int i = 0; i < layer_updates.layers_size(); ++i) { |
- int engine_layer_id = layer_updates.layers(i).id(); |
- Layer* engine_layer = GetLayerTree()->LayerById(engine_layer_id); |
- Layer* client_layer = |
- compositor_state_deserializer_->GetLayerForEngineId(engine_layer_id); |
- |
- // Copy test only layer data that are not serialized into network messages. |
- // So in test cases, layers on the client have the same states as their |
- // corresponding layers on the engine. |
- client_layer->SetForceRenderSurfaceForTesting( |
- engine_layer->force_render_surface_for_testing()); |
- } |
- |
- // The only case where the remote host would give a compositor update is if |
- // they wanted the main frame to go till the commit pipeline stage. So |
- // request one to make sure that the in process main frame also goes till |
- // the commit step. |
- layer_tree_host_in_process_->SetNeedsCommit(); |
-} |
- |
-} // namespace cc |