| // Copyright 2018 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_AURA_WINDOW_OCCLUSION_CHANGE_BUILDER_H_ |
| #define UI_AURA_WINDOW_OCCLUSION_CHANGE_BUILDER_H_ |
| |
| #include <memory> |
| |
| #include "ui/aura/aura_export.h" |
| #include "ui/aura/window.h" |
| |
| class SkRegion; |
| |
| namespace aura { |
| |
| // Interface for WindowOcclusionTracker to update window occlusion info. |
| class AURA_EXPORT WindowOcclusionChangeBuilder { |
| public: |
| virtual ~WindowOcclusionChangeBuilder() = default; |
| |
| // Add an occlusion info change for |window|. |
| // Note that setting Window::OcclusionState::UNKNOWN to a window is not |
| // allowed. |
| virtual void Add(Window* window, |
| Window::OcclusionState occlusion_state, |
| SkRegion occluded_region) = 0; |
| |
| // Factory to create the default implementation that updates occlusion info |
| // on aura::Window. |
| static std::unique_ptr<WindowOcclusionChangeBuilder> Create(); |
| }; |
| |
| } // namespace aura |
| |
| #endif // UI_AURA_WINDOW_OCCLUSION_CHANGE_BUILDER_H_ |