Index: chromeos/display/output_configurator.h |
diff --git a/chromeos/display/output_configurator.h b/chromeos/display/output_configurator.h |
index 2ff4484a0e66e0acb83287a5d5c543090bab7c26..6260f23f66e1d4ab7c230cb985d49e01de0189b1 100644 |
--- a/chromeos/display/output_configurator.h |
+++ b/chromeos/display/output_configurator.h |
@@ -36,12 +36,31 @@ enum OutputState { |
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, |
+}; |
+ |
+// Content protection methods applied on video output. |
+enum OutputProtectionMethod { |
+ OUTPUT_PROTECTION_METHOD_NONE = 0, |
+ OUTPUT_PROTECTION_METHOD_HDCP = 1 << 0, |
+}; |
+ |
// This class interacts directly with the underlying Xrandr API to manipulate |
// CTRCs and Outputs. |
class CHROMEOS_EXPORT OutputConfigurator |
: public base::MessageLoop::Dispatcher, |
public base::MessagePumpObserver { |
public: |
+ typedef uint64_t OutputProtectionClientId; |
+ |
struct ModeInfo { |
ModeInfo(); |
ModeInfo(int width, int height, bool interlaced, float refresh_rate); |
@@ -222,6 +241,18 @@ class CHROMEOS_EXPORT OutputConfigurator |
// 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; |
+ |
+ // Query link status and protection status. Returns true on success. |
Daniel Erat
2013/09/20 15:00:24
nit: s/Query/Queries/
kcwu
2013/09/23 18:00:02
Done.
|
+ virtual bool QueryOutputProtectionStatus( |
+ OutputProtectionClientId client_id, |
+ uint32_t* link_mask, |
+ uint32_t* protection_mask) = 0; |
+ |
+ // Request the desired protection methods. Returns true when the protection |
Daniel Erat
2013/09/20 15:00:24
nit: s/Request/Requests/
kcwu
2013/09/23 18:00:02
Done.
|
+ // request has been made. |
+ virtual bool EnableOutputProtection( |
+ OutputProtectionClientId client_id, |
+ uint32_t desired_method_mask) = 0; |
Daniel Erat
2013/09/20 15:00:24
you said that this matches the naming in the idl f
kcwu
2013/09/23 18:00:02
Done.
|
}; |
// Helper class used by tests. |
@@ -358,6 +389,31 @@ class CHROMEOS_EXPORT OutputConfigurator |
// so that time-consuming ConfigureOutputs() won't be called multiple times. |
void ScheduleConfigureOutputs(); |
+ // Registers a client for output protection and request a client id. Returns |
Daniel Erat
2013/09/20 15:00:24
nit: s/request/requests/
kcwu
2013/09/23 18:00:02
Done.
|
+ // 0 if requesting failed. |
+ OutputProtectionClientId RegisterOutputProtectionClient(); |
+ |
+ // Unregisters the client. |
+ void UnregisterOutputProtectionClient(OutputProtectionClientId client_id); |
+ |
+ // Queries link status and protection status. |
+ // |link_mask| is the type of connected output links, which is a bitmask of |
+ // OutputType values. |protection_mask| is the desired protection methods, |
+ // which is a bitmask of the OutputProtectionMethod values. |
+ // Returns true on success. |
+ bool QueryOutputProtectionStatus( |
+ OutputProtectionClientId client_id, |
+ uint32_t* link_mask, |
+ uint32_t* protection_mask); |
+ |
+ // Requests the desired protection methods. |
+ // |protection_mask| is the desired protection methods, which is a bitmask |
+ // of the PP_OutputProtectionMethod_Private values. |
Daniel Erat
2013/09/20 15:00:24
s/PP_OutputProtectionMethod_Private/OutputProtecti
kcwu
2013/09/23 18:00:02
Done.
kcwu
2013/09/23 18:00:02
Done.
|
+ // Returns true when the protection request has been made. |
+ bool EnableOutputProtection( |
+ OutputProtectionClientId client_id, |
+ uint32_t desired_method_mask); |
Daniel Erat
2013/09/20 15:00:24
s/method/protection/ here too
kcwu
2013/09/23 18:00:02
Done.
|
+ |
private: |
// Returns currently-connected outputs. This method is a wrapper around |
// |delegate_->GetOutputs()| that does additional work, like finding the |
@@ -463,6 +519,9 @@ class CHROMEOS_EXPORT OutputConfigurator |
// Dispatch(). |
scoped_ptr<base::OneShotTimer<OutputConfigurator> > configure_timer_; |
+ // Id for next output protection client. |
+ OutputProtectionClientId next_output_protection_client_id_; |
+ |
DISALLOW_COPY_AND_ASSIGN(OutputConfigurator); |
}; |