| Index: ui/display/chromeos/update_display_configuration_task.h
|
| diff --git a/ui/display/chromeos/update_display_configuration_task.h b/ui/display/chromeos/update_display_configuration_task.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..868f76fce50b0623ee3847b572ed2d0d06e6470e
|
| --- /dev/null
|
| +++ b/ui/display/chromeos/update_display_configuration_task.h
|
| @@ -0,0 +1,107 @@
|
| +// Copyright 2014 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 UI_DISPLAY_CHROMEOS_UPDATE_DISPLAY_CONFIGURATION_TASK_H_
|
| +#define UI_DISPLAY_CHROMEOS_UPDATE_DISPLAY_CONFIGURATION_TASK_H_
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "ui/display/chromeos/configure_displays_task.h"
|
| +#include "ui/display/chromeos/display_configurator.h"
|
| +
|
| +namespace ui {
|
| +
|
| +class DisplaySnapshot;
|
| +class NativeDisplayDelegate;
|
| +
|
| +class DISPLAY_EXPORT UpdateDisplayConfigurationTask {
|
| + public:
|
| + typedef base::Callback<void(
|
| + bool /* success */,
|
| + const std::vector<DisplayConfigurator::DisplayState>& /* displays */,
|
| + const gfx::Size& /* framebuffer_size */,
|
| + MultipleDisplayState /* new_display_state */,
|
| + chromeos::DisplayPowerState /* new_power_state */)> ResponseCallback;
|
| +
|
| + UpdateDisplayConfigurationTask(
|
| + NativeDisplayDelegate* delegate,
|
| + DisplayConfigurator::DisplayLayoutManager* layout_manager,
|
| + MultipleDisplayState new_display_state,
|
| + chromeos::DisplayPowerState new_power_state,
|
| + int power_flags,
|
| + uint32_t background_color_argb,
|
| + bool force_configure,
|
| + const ResponseCallback& callback);
|
| + ~UpdateDisplayConfigurationTask();
|
| +
|
| + void Run();
|
| +
|
| + private:
|
| + // Callback to NativeDisplayDelegate::GetDisplays().
|
| + void OnDisplaysUpdated(const std::vector<DisplaySnapshot*>& displays);
|
| +
|
| + // Callback to ConfigureDisplaysTask used to process the result of a display
|
| + // configuration run.
|
| + void OnStateEntered(ConfigureDisplaysTask::Status status);
|
| +
|
| + // If the initial display configuration run failed due to errors entering
|
| + // mirror more, another configuration run is executed to enter software
|
| + // mirroring. This is the callback used to process the result of that
|
| + // configuration.
|
| + void OnEnableSoftwareMirroring(ConfigureDisplaysTask::Status status);
|
| +
|
| + // Starts the configuration process. |callback| is used to continue the task
|
| + // after |configure_taks_| finishes executing.
|
| + void EnterState(const ConfigureDisplaysTask::ResponseCallback& callback);
|
| +
|
| + // Finishes display configuration and runs |callback_|.
|
| + void FinishConfiguration(bool success);
|
| +
|
| + // Returns true if the DPMS state should be force to on.
|
| + bool ShouldForceDpms() const;
|
| +
|
| + // Returns true if a display configuration is required.
|
| + bool ShouldConfigure() const;
|
| +
|
| + // Returns a display state based on the power state.
|
| + MultipleDisplayState ChooseDisplayState() const;
|
| +
|
| + NativeDisplayDelegate* delegate_; // Not owned.
|
| + DisplayConfigurator::DisplayLayoutManager* layout_manager_; // Not owned.
|
| +
|
| + // Requested display state.
|
| + MultipleDisplayState new_display_state_;
|
| +
|
| + // Requested power state.
|
| + chromeos::DisplayPowerState new_power_state_;
|
| +
|
| + // Bitwise-or-ed values for the kSetDisplayPower* values defined in
|
| + // DisplayConfigurator.
|
| + int power_flags_;
|
| +
|
| + uint32_t background_color_argb_;
|
| +
|
| + bool force_configure_;
|
| +
|
| + // Used to signal that the task has finished.
|
| + ResponseCallback callback_;
|
| +
|
| + bool force_dpms_;
|
| +
|
| + // List of updated displays.
|
| + std::vector<DisplayConfigurator::DisplayState> cached_displays_;
|
| +
|
| + gfx::Size framebuffer_size_;
|
| +
|
| + scoped_ptr<ConfigureDisplaysTask> configure_task_;
|
| +
|
| + base::WeakPtrFactory<UpdateDisplayConfigurationTask> weak_ptr_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(UpdateDisplayConfigurationTask);
|
| +};
|
| +
|
| +} // namespace ui
|
| +
|
| +#endif // UI_DISPLAY_CHROMEOS_UPDATE_DISPLAY_CONFIGURATION_TASK_H_
|
|
|