blob: e383e5069dcd82c0f9c4a044fd4f38d6eabc4969 [file] [log] [blame]
// Copyright (c) 2012 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 <stdint.h>
#include <vector>
#include "cc/base/cc_export.h"
#include "cc/input/selection.h"
#include "cc/surfaces/surface_id.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/events/latency_info.h"
#include "ui/gfx/geometry/size_f.h"
#include "ui/gfx/geometry/vector2d_f.h"
#include "ui/gfx/selection_bound.h"
namespace cc {
class CC_EXPORT CompositorFrameMetadata {
CompositorFrameMetadata(CompositorFrameMetadata&& other);
CompositorFrameMetadata& operator=(CompositorFrameMetadata&& other);
CompositorFrameMetadata Clone() const;
// The device scale factor used to generate this compositor frame.
float device_scale_factor = 0.f;
// Scroll offset and scale of the root layer. This can be used for tasks
// like positioning windowed plugins.
gfx::Vector2dF root_scroll_offset;
float page_scale_factor = 0.f;
// These limits can be used together with the scroll/scale fields above to
// determine if scrolling/scaling in a particular direction is possible.
gfx::SizeF scrollable_viewport_size;
gfx::SizeF root_layer_size;
float min_page_scale_factor = 0.f;
float max_page_scale_factor = 0.f;
bool root_overflow_x_hidden = false;
bool root_overflow_y_hidden = false;
bool may_contain_video = false;
// WebView makes quality decisions for rastering resourceless software frames
// based on information that a scroll or animation is active.
// TODO(aelias): Remove this and always enable filtering if there aren't apps
// depending on this anymore.
bool is_resourceless_software_draw_with_scroll_or_animation = false;
// Used to position the Android location top bar and page content, whose
// precise position is computed by the renderer compositor.
float top_controls_height = 0.f;
float top_controls_shown_ratio = 0.f;
// Used to position Android bottom bar, whose position is computed by the
// renderer compositor.
float bottom_controls_height = 0.f;
float bottom_controls_shown_ratio = 0.f;
// This color is usually obtained from the background color of the <body>
// element. It can be used for filling in gutter areas around the frame when
// it's too small to fill the box the parent reserved for it.
SkColor root_background_color = SK_ColorWHITE;
// Provides selection region updates relative to the current viewport. If the
// selection is empty or otherwise unused, the bound types will indicate such.
Selection<gfx::SelectionBound> selection;
std::vector<ui::LatencyInfo> latency_info;
// This is the set of Surfaces that are referenced by this frame.
std::vector<SurfaceId> referenced_surfaces;
// This indicates whether this CompositorFrame can be activated before
// dependencies have been resolved.
bool can_activate_before_dependencies = true;
CompositorFrameMetadata(const CompositorFrameMetadata& other);
CompositorFrameMetadata operator=(const CompositorFrameMetadata&) = delete;
} // namespace cc