X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchromeos%2Fdisplay%2Foutput_configurator.h;h=e6661e1246fd04ea77269aec4f906cee7573c27f;hb=ff3e2503a20db9193d323c1d19c38c68004dec4a;hp=8a8b36d49e73bda7112b503965994e9bf139ac14;hpb=7338fba38ba696536d1cc9d389afd716a6ab2fe6;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chromeos/display/output_configurator.h b/src/chromeos/display/output_configurator.h index 8a8b36d..e6661e1 100644 --- a/src/chromeos/display/output_configurator.h +++ b/src/chromeos/display/output_configurator.h @@ -18,6 +18,7 @@ #include "base/timer/timer.h" #include "chromeos/chromeos_export.h" #include "third_party/cros_system_api/dbus/service_constants.h" +#include "ui/display/display_constants.h" // Forward declarations for Xlib and Xrandr. // This is so unused X definitions don't pollute the namespace. @@ -28,40 +29,6 @@ typedef XID RRMode; namespace chromeos { -// Used to describe the state of a multi-display configuration. -enum OutputState { - STATE_INVALID, - STATE_HEADLESS, - STATE_SINGLE, - STATE_DUAL_MIRROR, - STATE_DUAL_EXTENDED, -}; - -// Video output types. -enum OutputType { - OUTPUT_TYPE_NONE = 0, - OUTPUT_TYPE_UNKNOWN = 1 << 0, - OUTPUT_TYPE_INTERNAL = 1 << 1, - OUTPUT_TYPE_VGA = 1 << 2, - OUTPUT_TYPE_HDMI = 1 << 3, - OUTPUT_TYPE_DVI = 1 << 4, - OUTPUT_TYPE_DISPLAYPORT = 1 << 5, - OUTPUT_TYPE_NETWORK = 1 << 6, -}; - -// Content protection methods applied on video output. -enum OutputProtectionMethod { - OUTPUT_PROTECTION_METHOD_NONE = 0, - OUTPUT_PROTECTION_METHOD_HDCP = 1 << 0, -}; - -// HDCP protection state. -enum HDCPState { - HDCP_STATE_UNDESIRED, - HDCP_STATE_DESIRED, - HDCP_STATE_ENABLED -}; - // This class interacts directly with the underlying Xrandr API to manipulate // CTRCs and Outputs. class CHROMEOS_EXPORT OutputConfigurator @@ -127,7 +94,7 @@ class CHROMEOS_EXPORT OutputConfigurator bool is_aspect_preserving_scaling; // The type of output. - OutputType type; + ui::OutputType type; // Map from mode IDs to details about the corresponding modes. ModeInfoMap mode_infos; @@ -160,7 +127,7 @@ class CHROMEOS_EXPORT OutputConfigurator // Called after a display mode change attempt failed. |failed_new_state| is // the new state which the system failed to enter. - virtual void OnDisplayModeChangeFailed(OutputState failed_new_state) {} + virtual void OnDisplayModeChangeFailed(ui::OutputState failed_new_state) {} }; // Interface for classes that make decisions about which output state @@ -170,7 +137,7 @@ class CHROMEOS_EXPORT OutputConfigurator virtual ~StateController() {} // Called when displays are detected. - virtual OutputState GetStateForDisplayIds( + virtual ui::OutputState GetStateForDisplayIds( const std::vector& display_ids) const = 0; // Queries the resolution (|width|x|height|) in pixels @@ -189,10 +156,11 @@ class CHROMEOS_EXPORT OutputConfigurator virtual void SetSoftwareMirroring(bool enabled) = 0; }; - // Interface for classes that perform actions on behalf of OutputController. - class Delegate { + // Interface for classes that perform display configuration actions on behalf + // of OutputConfigurator. + class NativeDisplayDelegate { public: - virtual ~Delegate() {} + virtual ~NativeDisplayDelegate() {} // Initializes the XRandR extension, saving the base event ID to // |event_base|. @@ -243,6 +211,25 @@ class CHROMEOS_EXPORT OutputConfigurator int height, const std::vector& outputs) = 0; + // Gets HDCP state of output. + virtual bool GetHDCPState(RROutput id, ui::HDCPState* state) = 0; + + // Sets HDCP state of output. + virtual bool SetHDCPState(RROutput id, ui::HDCPState state) = 0; + }; + + class TouchscreenDelegate { + public: + virtual ~TouchscreenDelegate() {} + + // Searches for touchscreens among input devices, + // and tries to match them up to screens in |outputs|. + // |outputs| is an array of detected screens. + // If a touchscreen with same resolution as an output's native mode + // is detected, its id will be stored in this output. + virtual void AssociateTouchscreens( + std::vector* outputs) = 0; + // Configures XInput's Coordinate Transformation Matrix property. // |touch_device_id| the ID of the touchscreen device to configure. // |ctm| contains the desired transformation parameters. The offsets @@ -250,16 +237,6 @@ class CHROMEOS_EXPORT OutputConfigurator // size for the corresponding offset. virtual void ConfigureCTM(int touch_device_id, const CoordinateTransformation& ctm) = 0; - - // Sends a D-Bus message to the power manager telling it that the - // machine is or is not projecting. - virtual void SendProjectingStateToPowerManager(bool projecting) = 0; - - // Gets HDCP state of output. - virtual bool GetHDCPState(RROutput id, HDCPState* state) = 0; - - // Sets HDCP state of output. - virtual bool SetHDCPState(RROutput id, HDCPState state) = 0; }; // Helper class used by tests. @@ -326,7 +303,7 @@ class CHROMEOS_EXPORT OutputConfigurator OutputConfigurator(); virtual ~OutputConfigurator(); - OutputState output_state() const { return output_state_; } + ui::OutputState output_state() const { return output_state_; } DisplayPowerState power_state() const { return power_state_; } void set_state_controller(StateController* controller) { @@ -336,9 +313,13 @@ class CHROMEOS_EXPORT OutputConfigurator mirroring_controller_ = controller; } - // Replaces |delegate_| with |delegate| and sets |configure_display_| to - // true. Should be called before Init(). - void SetDelegateForTesting(scoped_ptr delegate); + // Replaces |native_display_delegate_| with |delegate| and sets + // |configure_display_| to true. Should be called before Init(). + void SetNativeDisplayDelegateForTesting( + scoped_ptr delegate); + + void SetTouchscreenDelegateForTesting( + scoped_ptr delegate); // Sets the initial value of |power_state_|. Must be called before Start(). void SetInitialDisplayPower(DisplayPowerState power_state); @@ -365,23 +346,20 @@ class CHROMEOS_EXPORT OutputConfigurator // Force switching the display mode to |new_state|. Returns false if // switching failed (possibly because |new_state| is invalid for the // current set of connected outputs). - bool SetDisplayMode(OutputState new_state); + bool SetDisplayMode(ui::OutputState new_state); // Called when an RRNotify event is received. The implementation is // interested in the cases of RRNotify events which correspond to output // add/remove events. Note that Output add/remove events are sent in response // to our own reconfiguration operations so spurious events are common. // Spurious events will have no effect. - virtual bool Dispatch(const base::NativeEvent& event) OVERRIDE; + virtual uint32_t Dispatch(const base::NativeEvent& event) OVERRIDE; // Overridden from base::MessagePumpObserver: virtual base::EventStatus WillProcessEvent( const base::NativeEvent& event) OVERRIDE; virtual void DidProcessEvent(const base::NativeEvent& event) OVERRIDE; - // Called when a casting session is started or stopped. - void OnCastingSessionStartedOrStopped(bool started); - void AddObserver(Observer* observer); void RemoveObserver(Observer* observer); @@ -462,7 +440,7 @@ class CHROMEOS_EXPORT OutputConfigurator void ConfigureOutputs(); // Notifies observers about an attempted state change. - void NotifyObservers(bool success, OutputState attempted_state); + void NotifyObservers(bool success, ui::OutputState attempted_state); // Switches to the state specified in |output_state| and |power_state|. // If the hardware mirroring failed and |mirroring_controller_| is set, @@ -470,18 +448,17 @@ class CHROMEOS_EXPORT OutputConfigurator // to enable software based mirroring. // On success, updates |output_state_|, |power_state_|, and |cached_outputs_| // and returns true. - bool EnterStateOrFallBackToSoftwareMirroring( - OutputState output_state, - DisplayPowerState power_state); + bool EnterStateOrFallBackToSoftwareMirroring(ui::OutputState output_state, + DisplayPowerState power_state); // Switches to the state specified in |output_state| and |power_state|. // On success, updates |output_state_|, |power_state_|, and // |cached_outputs_| and returns true. - bool EnterState(OutputState output_state, DisplayPowerState power_state); + bool EnterState(ui::OutputState output_state, DisplayPowerState power_state); // Returns the output state that should be used with |cached_outputs_| while // in |power_state|. - OutputState ChooseOutputState(DisplayPowerState power_state) const; + ui::OutputState ChooseOutputState(DisplayPowerState power_state) const; // Computes the relevant transformation for mirror mode. // |output| is the output on which mirror mode is being applied. @@ -506,12 +483,10 @@ class CHROMEOS_EXPORT OutputConfigurator // Applies output protections according to requests. bool ApplyProtections(const DisplayProtections& requests); - // Sends the current projecting state to power manager. - void SendProjectingStateToPowerManager(); - StateController* state_controller_; SoftwareMirroringController* mirroring_controller_; - scoped_ptr delegate_; + scoped_ptr native_display_delegate_; + scoped_ptr touchscreen_delegate_; // Used to enable modes which rely on panel fitting. bool is_panel_fitting_enabled_; @@ -536,7 +511,7 @@ class CHROMEOS_EXPORT OutputConfigurator int xrandr_event_base_; // The current display state. - OutputState output_state_; + ui::OutputState output_state_; // The current power state. DisplayPowerState power_state_; @@ -557,9 +532,6 @@ class CHROMEOS_EXPORT OutputConfigurator // Output protection requests of each client. ProtectionRequests client_protection_requests_; - // Number of outstanding casting sessions. - int casting_session_count_; - DISALLOW_COPY_AND_ASSIGN(OutputConfigurator); };