Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(578)

Unified Diff: blimp/client/compositor/blimp_compositor.h

Issue 1636163002: Restructure contents of blimp/client. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « blimp/client/blimp_startup.cc ('k') | blimp/client/compositor/blimp_compositor.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: blimp/client/compositor/blimp_compositor.h
diff --git a/blimp/client/compositor/blimp_compositor.h b/blimp/client/compositor/blimp_compositor.h
deleted file mode 100644
index 50056f8a1dddfdf604d0855c298556e396504b71..0000000000000000000000000000000000000000
--- a/blimp/client/compositor/blimp_compositor.h
+++ /dev/null
@@ -1,185 +0,0 @@
-// 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 BLIMP_CLIENT_COMPOSITOR_BLIMP_COMPOSITOR_H_
-#define BLIMP_CLIENT_COMPOSITOR_BLIMP_COMPOSITOR_H_
-
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "blimp/client/blimp_client_export.h"
-#include "blimp/client/input/blimp_input_manager.h"
-#include "blimp/client/session/render_widget_feature.h"
-#include "cc/layers/layer_settings.h"
-#include "cc/trees/layer_tree_host_client.h"
-#include "cc/trees/layer_tree_settings.h"
-#include "cc/trees/remote_proto_channel.h"
-#include "ui/gfx/geometry/size.h"
-#include "ui/gfx/native_widget_types.h"
-
-namespace base {
-class SingleThreadTaskRunner;
-class Thread;
-}
-
-namespace cc {
-class LayerTreeHost;
-}
-
-namespace blimp {
-
-class BlimpMessage;
-
-namespace client {
-
-// BlimpCompositor provides the basic framework and setup to host a
-// LayerTreeHost. The class that owns the LayerTreeHost is usually called the
-// compositor, but the LayerTreeHost does the compositing work. The rendering
-// surface this compositor draws to is defined by the gfx::AcceleratedWidget set
-// by SetAcceleratedWidget(). This class should only be accessed from the main
-// thread. Any interaction with the compositing thread should happen through
-// the LayerTreeHost or RemoteChannelImpl.
-class BLIMP_CLIENT_EXPORT BlimpCompositor
- : public cc::LayerTreeHostClient,
- public cc::RemoteProtoChannel,
- public RenderWidgetFeature::RenderWidgetFeatureDelegate,
- public BlimpInputManagerClient {
- public:
- // |dp_to_px| is the scale factor required to move from dp (device pixels) to
- // px. See https://developer.android.com/guide/practices/screens_support.html
- // for more details.
- BlimpCompositor(float dp_to_px, RenderWidgetFeature* render_widget_feature);
-
- ~BlimpCompositor() override;
-
- // Default layer settings for all Blimp layer instances.
- static cc::LayerSettings LayerSettings();
-
- // Sets whether or not this compositor actually draws to the output surface.
- // Setting this to false will make the compositor drop all of its resources
- // and the output surface. Setting it to true again will rebuild the output
- // surface from the gfx::AcceleratedWidget (see SetAcceleratedWidget).
- void SetVisible(bool visible);
-
- // Sets the size of the viewport on the compositor.
- // TODO(dtrainor): Should this be set from the engine all the time?
- void SetSize(const gfx::Size& size);
-
- // Lets this compositor know that it can draw to |widget|. This means that,
- // if this compositor is visible, it will build an output surface and GL
- // context around |widget| and will draw to it. ReleaseAcceleratedWidget()
- // *must* be called before SetAcceleratedWidget() is called with the same
- // gfx::AcceleratedWidget on another compositor.
- void SetAcceleratedWidget(gfx::AcceleratedWidget widget);
-
- // Releases the internally stored gfx::AcceleratedWidget and the associated
- // output surface. This must be called before calling
- // SetAcceleratedWidget() with the same gfx::AcceleratedWidget on another
- // compositor.
- void ReleaseAcceleratedWidget();
-
- // Forwards the touch event to the |input_manager_|.
- bool OnTouchEvent(const ui::MotionEvent& motion_event);
-
- protected:
- // Populates the cc::LayerTreeSettings used by the cc::LayerTreeHost. Can be
- // overridden to provide custom settings parameters.
- virtual void GenerateLayerTreeSettings(cc::LayerTreeSettings* settings);
-
- private:
- // LayerTreeHostClient implementation.
- void WillBeginMainFrame() override;
- void DidBeginMainFrame() override;
- void BeginMainFrame(const cc::BeginFrameArgs& args) override;
- void BeginMainFrameNotExpectedSoon() 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;
- void RequestNewOutputSurface() override;
- void DidInitializeOutputSurface() override;
- void DidFailToInitializeOutputSurface() override;
- void WillCommit() override;
- void DidCommit() override;
- void DidCommitAndDrawFrame() override;
- void DidCompleteSwapBuffers() override;
- void DidCompletePageScaleAnimation() override;
- void RecordFrameTimingEvents(
- scoped_ptr<cc::FrameTimingTracker::CompositeTimingSet> composite_events,
- scoped_ptr<cc::FrameTimingTracker::MainFrameTimingSet> main_frame_events)
- override;
-
- // RemoteProtoChannel implementation.
- void SetProtoReceiver(ProtoReceiver* receiver) override;
- void SendCompositorProto(const cc::proto::CompositorMessage& proto) override;
-
- // RenderWidgetFeatureDelegate implementation.
- void OnRenderWidgetInitialized() override;
- void OnCompositorMessageReceived(
- scoped_ptr<cc::proto::CompositorMessage> message) override;
-
- // BlimpInputManagerClient implementation.
- void SendWebInputEvent(const blink::WebInputEvent& input_event) override;
-
- // Helper method to build the internal CC compositor instance from |message|.
- void CreateLayerTreeHost(scoped_ptr<cc::proto::CompositorMessage> message);
-
- // Creates (if necessary) and returns a TaskRunner for a thread meant to run
- // compositor rendering.
- void HandlePendingOutputSurfaceRequest();
- scoped_refptr<base::SingleThreadTaskRunner> GetCompositorTaskRunner();
-
- gfx::Size viewport_size_;
-
- // The scale factor used to convert dp units (device independent pixels) to
- // pixels.
- float device_scale_factor_;
- scoped_ptr<cc::LayerTreeHost> host_;
- scoped_ptr<cc::LayerTreeSettings> settings_;
-
- // Lazily created thread that will run the compositor rendering tasks.
- scoped_ptr<base::Thread> compositor_thread_;
-
- gfx::AcceleratedWidget window_;
-
- // Whether or not |host_| should be visible. This is stored in case |host_|
- // is null when SetVisible() is called or if we don't have a
- // gfx::AcceleratedWidget to build an output surface from.
- bool host_should_be_visible_;
-
- // Whether there is an OutputSurface request pending from the current
- // |host_|. Becomes |true| if RequestNewOutputSurface is called, and |false|
- // if |host_| is deleted or we succeed in creating *and* initializing an
- // OutputSurface (which is essentially the contract with cc).
- bool output_surface_request_pending_;
-
- // To be notified of any incoming compositor protos that are specifically sent
- // to |render_widget_id_|.
- cc::RemoteProtoChannel::ProtoReceiver* remote_proto_channel_receiver_;
-
- // The bridge to the network layer that does the proto/RenderWidget id work.
- // BlimpCompositor does not own this and it is expected to outlive this
- // BlimpCompositor instance.
- // TODO(dtrainor): Move this to a higher level once we start dealing with
- // multiple tabs.
- RenderWidgetFeature* render_widget_feature_;
-
- // Handles input events for the current render widget. The lifetime of the
- // input manager is tied to the lifetime of the |host_| which owns the
- // cc::InputHandler. The input events are forwarded to this input handler by
- // the manager to be handled by the client compositor for the current render
- // widget.
- scoped_ptr<BlimpInputManager> input_manager_;
-
- DISALLOW_COPY_AND_ASSIGN(BlimpCompositor);
-};
-
-} // namespace client
-} // namespace blimp
-
-#endif // BLIMP_CLIENT_COMPOSITOR_BLIMP_COMPOSITOR_H_
« no previous file with comments | « blimp/client/blimp_startup.cc ('k') | blimp/client/compositor/blimp_compositor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698