| Index: services/ui/display/screen_manager_forwarding.h
|
| diff --git a/services/ui/display/screen_manager_forwarding.h b/services/ui/display/screen_manager_forwarding.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d3a0f5bb4671b5ecb45f5502c95f19ddb628863a
|
| --- /dev/null
|
| +++ b/services/ui/display/screen_manager_forwarding.h
|
| @@ -0,0 +1,96 @@
|
| +// Copyright 2017 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 SERVICES_UI_DISPLAY_SCREEN_MANAGER_FORWARDING_H_
|
| +#define SERVICES_UI_DISPLAY_SCREEN_MANAGER_FORWARDING_H_
|
| +
|
| +#include <memory>
|
| +#include <unordered_map>
|
| +#include <vector>
|
| +
|
| +#include "base/macros.h"
|
| +#include "mojo/public/cpp/bindings/binding.h"
|
| +#include "services/service_manager/public/cpp/interface_factory.h"
|
| +#include "services/ui/display/screen_manager.h"
|
| +#include "ui/display/mojo/native_display_delegate.mojom.h"
|
| +#include "ui/display/types/native_display_observer.h"
|
| +
|
| +namespace display {
|
| +
|
| +class NativeDisplayDelegate;
|
| +
|
| +// ScreenManager implementation that implements mojom::NativeDisplayDelegate.
|
| +// This will own a real NativeDisplayDelegate and forwards calls to and
|
| +// responses from it over Mojo.
|
| +class ScreenManagerForwarding
|
| + : public ScreenManager,
|
| + public NativeDisplayObserver,
|
| + public mojom::NativeDisplayDelegate,
|
| + service_manager::InterfaceFactory<mojom::NativeDisplayDelegate> {
|
| + public:
|
| + ScreenManagerForwarding();
|
| + ~ScreenManagerForwarding() override;
|
| +
|
| + // ScreenManager:
|
| + void AddInterfaces(service_manager::BinderRegistry* registry) override;
|
| + void Init(ScreenManagerDelegate* delegate) override;
|
| + void RequestCloseDisplay(int64_t display_id) override;
|
| +
|
| + // NativeDisplayObserver:
|
| + void OnConfigurationChanged() override;
|
| + void OnDisplaySnapshotsInvalidated() override;
|
| +
|
| + // mojom::NativeDisplayDelegate:
|
| + void Initialize(mojom::NativeDisplayObserverPtr observer) override;
|
| + void TakeDisplayControl(const TakeDisplayControlCallback& callback) override;
|
| + void RelinquishDisplayControl(
|
| + const RelinquishDisplayControlCallback& callback) override;
|
| + void GetDisplays(const GetDisplaysCallback& callback) override;
|
| + void Configure(int64_t display_id,
|
| + std::unique_ptr<display::DisplayMode> mode,
|
| + const gfx::Point& origin,
|
| + const ConfigureCallback& callback) override;
|
| + void GetHDCPState(int64_t display_id,
|
| + const GetHDCPStateCallback& callback) override;
|
| + void SetHDCPState(int64_t display_id,
|
| + display::HDCPState state,
|
| + const SetHDCPStateCallback& callback) override;
|
| + void SetColorCorrection(
|
| + int64_t display_id,
|
| + const std::vector<display::GammaRampRGBEntry>& degamma_lut,
|
| + const std::vector<display::GammaRampRGBEntry>& gamma_lut,
|
| + const std::vector<float>& correction_matrix) override;
|
| +
|
| + // service_manager::InterfaceFactory<mojom::NativeDisplayDelegate>:
|
| + void Create(const service_manager::Identity& remote_identity,
|
| + mojom::NativeDisplayDelegateRequest request) override;
|
| +
|
| + private:
|
| + // Forwards results from GetDisplays() back with |callback|.
|
| + void ForwardGetDisplays(
|
| + const mojom::NativeDisplayDelegate::GetDisplaysCallback& callback,
|
| + const std::vector<DisplaySnapshot*>& displays);
|
| +
|
| + // Forwards results from call to Configure() back with |callback|.
|
| + void ForwardConfigure(
|
| + DisplaySnapshot* snapshot,
|
| + const DisplayMode* mode,
|
| + const gfx::Point& origin,
|
| + const mojom::NativeDisplayDelegate::ConfigureCallback& callback,
|
| + bool status);
|
| +
|
| + mojo::Binding<mojom::NativeDisplayDelegate> binding_;
|
| + mojom::NativeDisplayObserverPtr observer_;
|
| +
|
| + std::unique_ptr<display::NativeDisplayDelegate> native_display_delegate_;
|
| +
|
| + // Cached pointers to snapshots owned by the |native_display_delegate_|.
|
| + std::unordered_map<int64_t, DisplaySnapshot*> snapshot_map_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ScreenManagerForwarding);
|
| +};
|
| +
|
| +} // namespace display
|
| +
|
| +#endif // SERVICES_UI_DISPLAY_SCREEN_MANAGER_FORWARDING_H_
|
|
|