namespace {
-// Strings returned by TestDelegate::GetActionsAndClear() to describe various
-// actions that were performed.
+// Strings returned by TestNativeDisplayDelegate::GetActionsAndClear() to
+// describe various actions that were performed.
const char kInitXRandR[] = "init";
const char kUpdateXRandR[] = "update";
const char kGrab[] = "grab";
const char kUngrab[] = "ungrab";
const char kSync[] = "sync";
const char kForceDPMS[] = "dpms";
-const char kProjectingOn[] = "projecting";
-const char kProjectingOff[] = "not_projecting";
-// String returned by TestDelegate::GetActionsAndClear() if no actions were
-// requested.
+// String returned by TestNativeDisplayDelegate::GetActionsAndClear() if no
+// actions were requested.
const char kNoActions[] = "";
-// Returns a string describing a TestDelegate::SetBackgroundColor() call.
+// Returns a string describing a TestNativeDisplayDelegate::SetBackgroundColor()
+// call.
std::string GetBackgroundAction(uint32 color_argb) {
return base::StringPrintf("background(0x%x)", color_argb);
}
-// Returns a string describing a TestDelegate::AddOutputMode() call.
+// Returns a string describing a TestNativeDisplayDelegate::AddOutputMode()
+// call.
std::string GetAddOutputModeAction(RROutput output, RRMode mode) {
return base::StringPrintf("add_mode(output=%lu,mode=%lu)", output, mode);
}
-// Returns a string describing a TestDelegate::ConfigureCrtc() call.
+// Returns a string describing a TestNativeDisplayDelegate::ConfigureCrtc()
+// call.
std::string GetCrtcAction(RRCrtc crtc,
int x,
int y,
crtc, x, y, mode, output);
}
-// Returns a string describing a TestDelegate::CreateFramebuffer() call.
+// Returns a string describing a TestNativeDisplayDelegate::CreateFramebuffer()
+// call.
std::string GetFramebufferAction(int width,
int height,
RRCrtc crtc1,
width, height, crtc1, crtc2);
}
-// Returns a string describing a TestDelegate::ConfigureCTM() call.
+// Returns a string describing a TestNativeDisplayDelegate::ConfigureCTM() call.
std::string GetCTMAction(
int device_id,
const OutputConfigurator::CoordinateTransformation& ctm) {
ctm.x_scale, ctm.x_offset, ctm.y_scale, ctm.y_offset);
}
-// Returns a string describing a TestDelegate::SetHDCPState() call.
-std::string GetSetHDCPStateAction(RROutput id, HDCPState state) {
+// Returns a string describing a TestNativeDisplayDelegate::SetHDCPState() call.
+std::string GetSetHDCPStateAction(RROutput id, ui::HDCPState state) {
return base::StringPrintf("set_hdcp(id=%lu,state=%d)", id, state);
}
// Joins a sequence of strings describing actions (e.g. kScreenDim) such
// that they can be compared against a string returned by
-// TestDelegate::GetActionsAndClear(). The list of actions must be
+// ActionLogger::GetActionsAndClear(). The list of actions must be
// terminated by a NULL pointer.
std::string JoinActions(const char* action, ...) {
std::string actions;
return actions;
}
-class TestDelegate : public OutputConfigurator::Delegate {
+class ActionLogger {
+ public:
+ ActionLogger() {}
+
+ void AppendAction(const std::string& action) {
+ if (!actions_.empty())
+ actions_ += ",";
+ actions_ += action;
+ }
+
+ // Returns a comma-separated string describing the actions that were
+ // requested since the previous call to GetActionsAndClear() (i.e.
+ // results are non-repeatable).
+ std::string GetActionsAndClear() {
+ std::string actions = actions_;
+ actions_.clear();
+ return actions;
+ }
+
+ private:
+ std::string actions_;
+
+ DISALLOW_COPY_AND_ASSIGN(ActionLogger);
+};
+
+class TestTouchscreenDelegate : public OutputConfigurator::TouchscreenDelegate {
+ public:
+ // Ownership of |log| remains with the caller.
+ explicit TestTouchscreenDelegate(ActionLogger* log) : log_(log) {}
+ virtual ~TestTouchscreenDelegate() {}
+
+ const OutputConfigurator::CoordinateTransformation& GetCTM(
+ int touch_device_id) {
+ return ctms_[touch_device_id];
+ }
+
+ // OutputConfigurator::TouchscreenDelegate implementation:
+ virtual void AssociateTouchscreens(
+ std::vector<OutputConfigurator::OutputSnapshot>* outputs) OVERRIDE {}
+ virtual void ConfigureCTM(
+ int touch_device_id,
+ const OutputConfigurator::CoordinateTransformation& ctm) OVERRIDE {
+ log_->AppendAction(GetCTMAction(touch_device_id, ctm));
+ ctms_[touch_device_id] = ctm;
+ }
+
+ private:
+ ActionLogger* log_; // Not owned.
+
+ // Most-recently-configured transformation matrices, keyed by touch device ID.
+ std::map<int, OutputConfigurator::CoordinateTransformation> ctms_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestTouchscreenDelegate);
+};
+
+class TestNativeDisplayDelegate
+ : public OutputConfigurator::NativeDisplayDelegate {
public:
static const int kXRandREventBase = 10;
- TestDelegate()
+ // Ownership of |log| remains with the caller.
+ explicit TestNativeDisplayDelegate(ActionLogger* log)
: max_configurable_pixels_(0),
- hdcp_state_(HDCP_STATE_UNDESIRED) {}
- virtual ~TestDelegate() {}
+ hdcp_state_(ui::HDCP_STATE_UNDESIRED),
+ log_(log) {}
+ virtual ~TestNativeDisplayDelegate() {}
const std::vector<OutputConfigurator::OutputSnapshot>& outputs() const {
return outputs_;
max_configurable_pixels_ = pixels;
}
- void set_hdcp_state(HDCPState state) { hdcp_state_ = state; }
-
- // Returns a comma-separated string describing the actions that were
- // requested since the previous call to GetActionsAndClear() (i.e.
- // results are non-repeatable).
- std::string GetActionsAndClear() {
- std::string actions = actions_;
- actions_.clear();
- return actions;
- }
-
- const OutputConfigurator::CoordinateTransformation& get_ctm(
- int touch_device_id) {
- return ctms_[touch_device_id];
- }
+ void set_hdcp_state(ui::HDCPState state) { hdcp_state_ = state; }
// OutputConfigurator::Delegate overrides:
virtual void InitXRandRExtension(int* event_base) OVERRIDE {
- AppendAction(kInitXRandR);
+ log_->AppendAction(kInitXRandR);
*event_base = kXRandREventBase;
}
- virtual void UpdateXRandRConfiguration(
- const base::NativeEvent& event) OVERRIDE { AppendAction(kUpdateXRandR); }
- virtual void GrabServer() OVERRIDE { AppendAction(kGrab); }
- virtual void UngrabServer() OVERRIDE { AppendAction(kUngrab); }
- virtual void SyncWithServer() OVERRIDE { AppendAction(kSync); }
+ virtual void UpdateXRandRConfiguration(const base::NativeEvent& event)
+ OVERRIDE {
+ log_->AppendAction(kUpdateXRandR);
+ }
+ virtual void GrabServer() OVERRIDE { log_->AppendAction(kGrab); }
+ virtual void UngrabServer() OVERRIDE { log_->AppendAction(kUngrab); }
+ virtual void SyncWithServer() OVERRIDE { log_->AppendAction(kSync); }
virtual void SetBackgroundColor(uint32 color_argb) OVERRIDE {
- AppendAction(GetBackgroundAction(color_argb));
+ log_->AppendAction(GetBackgroundAction(color_argb));
}
- virtual void ForceDPMSOn() OVERRIDE { AppendAction(kForceDPMS); }
+ virtual void ForceDPMSOn() OVERRIDE { log_->AppendAction(kForceDPMS); }
virtual std::vector<OutputConfigurator::OutputSnapshot> GetOutputs()
OVERRIDE {
return outputs_;
}
virtual void AddOutputMode(RROutput output, RRMode mode) OVERRIDE {
- AppendAction(GetAddOutputModeAction(output, mode));
+ log_->AppendAction(GetAddOutputModeAction(output, mode));
}
virtual bool ConfigureCrtc(RRCrtc crtc,
RRMode mode,
RROutput output,
int x,
int y) OVERRIDE {
- AppendAction(GetCrtcAction(crtc, x, y, mode, output));
+ log_->AppendAction(GetCrtcAction(crtc, x, y, mode, output));
if (max_configurable_pixels_ == 0)
return true;
int width,
int height,
const std::vector<OutputConfigurator::OutputSnapshot>& outputs) OVERRIDE {
- AppendAction(
+ log_->AppendAction(
GetFramebufferAction(width,
height,
outputs.size() >= 1 ? outputs[0].crtc : 0,
outputs.size() >= 2 ? outputs[1].crtc : 0));
}
- virtual void ConfigureCTM(
- int touch_device_id,
- const OutputConfigurator::CoordinateTransformation& ctm) OVERRIDE {
- AppendAction(GetCTMAction(touch_device_id, ctm));
- ctms_[touch_device_id] = ctm;
- }
- virtual void SendProjectingStateToPowerManager(bool projecting) OVERRIDE {
- AppendAction(projecting ? kProjectingOn : kProjectingOff);
- }
-
- virtual bool GetHDCPState(RROutput id, HDCPState* state) OVERRIDE {
+ virtual bool GetHDCPState(RROutput id, ui::HDCPState* state) OVERRIDE {
*state = hdcp_state_;
return true;
}
- virtual bool SetHDCPState(RROutput id, HDCPState state) OVERRIDE {
- AppendAction(GetSetHDCPStateAction(id, state));
+ virtual bool SetHDCPState(RROutput id, ui::HDCPState state) OVERRIDE {
+ log_->AppendAction(GetSetHDCPStateAction(id, state));
return true;
}
private:
- struct ModeDetails {
- ModeDetails() : width(0), height(0), interlaced(false) {}
- ModeDetails(int width, int height, bool interlaced)
- : width(width),
- height(height),
- interlaced(interlaced) {}
-
- int width;
- int height;
- bool interlaced;
- };
-
- void AppendAction(const std::string& action) {
- if (!actions_.empty())
- actions_ += ",";
- actions_ += action;
- }
-
OutputConfigurator::OutputSnapshot* GetOutputFromId(RROutput output_id) {
for (unsigned int i = 0; i < outputs_.size(); i++) {
if (outputs_[i].output == output_id)
return NULL;
}
- std::map<RRMode, ModeDetails> modes_;
-
- // Most-recently-configured transformation matrices, keyed by touch device ID.
- std::map<int, OutputConfigurator::CoordinateTransformation> ctms_;
-
// Outputs to be returned by GetOutputs().
std::vector<OutputConfigurator::OutputSnapshot> outputs_;
- std::string actions_;
-
// |max_configurable_pixels_| represents the maximum number of pixels that
// ConfigureCrtc will support. Tests can use this to force ConfigureCrtc
// to fail if attempting to set a resolution that is higher than what
int max_configurable_pixels_;
// Result value of GetHDCPState().
- HDCPState hdcp_state_;
+ ui::HDCPState hdcp_state_;
- DISALLOW_COPY_AND_ASSIGN(TestDelegate);
+ ActionLogger* log_; // Not owned.
+
+ DISALLOW_COPY_AND_ASSIGN(TestNativeDisplayDelegate);
};
class TestObserver : public OutputConfigurator::Observer {
const {
return latest_outputs_;
}
- OutputState latest_failed_state() const { return latest_failed_state_; }
+ ui::OutputState latest_failed_state() const { return latest_failed_state_; }
void Reset() {
num_changes_ = 0;
num_failures_ = 0;
latest_outputs_.clear();
- latest_failed_state_ = STATE_INVALID;
+ latest_failed_state_ = ui::OUTPUT_STATE_INVALID;
}
// OutputConfigurator::Observer overrides:
latest_outputs_ = outputs;
}
- virtual void OnDisplayModeChangeFailed(OutputState failed_new_state)
+ virtual void OnDisplayModeChangeFailed(ui::OutputState failed_new_state)
OVERRIDE {
num_failures_++;
latest_failed_state_ = failed_new_state;
// Parameters most recently passed to OnDisplayMode*().
std::vector<OutputConfigurator::OutputSnapshot> latest_outputs_;
- OutputState latest_failed_state_;
+ ui::OutputState latest_failed_state_;
DISALLOW_COPY_AND_ASSIGN(TestObserver);
};
class TestStateController : public OutputConfigurator::StateController {
public:
- TestStateController() : state_(STATE_DUAL_EXTENDED) {}
+ TestStateController() : state_(ui::OUTPUT_STATE_DUAL_EXTENDED) {}
virtual ~TestStateController() {}
- void set_state(OutputState state) { state_ = state; }
+ void set_state(ui::OutputState state) { state_ = state; }
// OutputConfigurator::StateController overrides:
- virtual OutputState GetStateForDisplayIds(
- const std::vector<int64>& outputs) const OVERRIDE { return state_; }
+ virtual ui::OutputState GetStateForDisplayIds(
+ const std::vector<int64>& outputs) const OVERRIDE {
+ return state_;
+ }
virtual bool GetResolutionForDisplayId(
int64 display_id,
int *width,
}
private:
- OutputState state_;
+ ui::OutputState state_;
DISALLOW_COPY_AND_ASSIGN(TestStateController);
};
OutputConfiguratorTest()
: observer_(&configurator_),
- test_api_(&configurator_, TestDelegate::kXRandREventBase) {}
+ test_api_(&configurator_, TestNativeDisplayDelegate::kXRandREventBase) {
+ }
virtual ~OutputConfiguratorTest() {}
virtual void SetUp() OVERRIDE {
- delegate_ = new TestDelegate();
- configurator_.SetDelegateForTesting(
- scoped_ptr<OutputConfigurator::Delegate>(delegate_));
+ log_.reset(new ActionLogger());
+
+ native_display_delegate_ = new TestNativeDisplayDelegate(log_.get());
+ configurator_.SetNativeDisplayDelegateForTesting(
+ scoped_ptr<OutputConfigurator::NativeDisplayDelegate>(
+ native_display_delegate_));
+
+ touchscreen_delegate_ = new TestTouchscreenDelegate(log_.get());
+ configurator_.SetTouchscreenDelegateForTesting(
+ scoped_ptr<OutputConfigurator::TouchscreenDelegate>(
+ touchscreen_delegate_));
+
configurator_.set_state_controller(&state_controller_);
configurator_.set_mirroring_controller(&mirroring_controller_);
o->crtc = 10;
o->current_mode = kSmallModeId;
o->native_mode = kSmallModeId;
- o->type = OUTPUT_TYPE_INTERNAL;
+ o->type = ui::OUTPUT_TYPE_INTERNAL;
o->is_aspect_preserving_scaling = true;
o->mode_infos[kSmallModeId] = small_mode_info;
o->has_display_id = true;
o->crtc = 11;
o->current_mode = kBigModeId;
o->native_mode = kBigModeId;
- o->type = OUTPUT_TYPE_HDMI;
+ o->type = ui::OUTPUT_TYPE_HDMI;
o->is_aspect_preserving_scaling = true;
o->mode_infos[kSmallModeId] = small_mode_info;
o->mode_infos[kBigModeId] = big_mode_info;
}
protected:
- // Configures |delegate_| to return the first |num_outputs| entries from
+ // Configures |native_display_delegate_| to return the first |num_outputs|
+ // entries from
// |outputs_|. If |send_events| is true, also sends screen-change and
// output-change events to |configurator_| and triggers the configure
// timeout if one was scheduled.
std::vector<OutputConfigurator::OutputSnapshot> outputs;
for (size_t i = 0; i < num_outputs; ++i)
outputs.push_back(outputs_[i]);
- delegate_->set_outputs(outputs);
+ native_display_delegate_->set_outputs(outputs);
if (send_events) {
test_api_.SendScreenChangeEvent();
// Initializes |configurator_| with a single internal display.
void InitWithSingleOutput() {
UpdateOutputs(1, false);
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
configurator_.Init(false);
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
configurator_.Start(0);
- EXPECT_EQ(JoinActions(kGrab, kInitXRandR,
- GetFramebufferAction(kSmallModeWidth,
- kSmallModeHeight, outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- kForceDPMS, kUngrab, kProjectingOff, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ kInitXRandR,
+ GetFramebufferAction(
+ kSmallModeWidth, kSmallModeHeight, outputs_[0].crtc, 0).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output)
+ .c_str(),
+ kForceDPMS,
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
}
base::MessageLoop message_loop_;
TestMirroringController mirroring_controller_;
OutputConfigurator configurator_;
TestObserver observer_;
- TestDelegate* delegate_; // not owned
+ scoped_ptr<ActionLogger> log_;
+ TestNativeDisplayDelegate* native_display_delegate_; // not owned
+ TestTouchscreenDelegate* touchscreen_delegate_; // not owned
OutputConfigurator::TestApi test_api_;
OutputConfigurator::OutputSnapshot outputs_[2];
// Connect a second output and check that the configurator enters
// extended mode.
observer_.Reset();
- state_controller_.set_state(STATE_DUAL_EXTENDED);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_EXTENDED);
UpdateOutputs(2, true);
const int kDualHeight =
kSmallModeHeight + OutputConfigurator::kVerticalGap + kBigModeHeight;
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(kBigModeWidth, kDualHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0,
- kSmallModeHeight + OutputConfigurator::kVerticalGap,
- kBigModeId, outputs_[1].output).c_str(),
- kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(
+ kBigModeWidth, kDualHeight, outputs_[0].crtc, outputs_[1].crtc)
+ .c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc,
+ 0,
+ kSmallModeHeight + OutputConfigurator::kVerticalGap,
+ kBigModeId,
+ outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
observer_.Reset();
- EXPECT_TRUE(configurator_.SetDisplayMode(STATE_DUAL_MIRROR));
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kSmallModeId,
- outputs_[1].output).c_str(),
- kUngrab, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_TRUE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_DUAL_MIRROR));
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(
+ outputs_[1].crtc, 0, 0, kSmallModeId, outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
// Disconnect the second output.
observer_.Reset();
UpdateOutputs(1, true);
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- kUngrab, kProjectingOff, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(
+ kSmallModeWidth, kSmallModeHeight, outputs_[0].crtc, 0).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
// Get rid of shared modes to force software mirroring.
outputs_[1].mode_infos.erase(kSmallModeId);
- state_controller_.set_state(STATE_DUAL_EXTENDED);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_EXTENDED);
UpdateOutputs(2, true);
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(kBigModeWidth, kDualHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0,
- kSmallModeHeight + OutputConfigurator::kVerticalGap,
- kBigModeId, outputs_[1].output).c_str(),
- kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(
+ kBigModeWidth, kDualHeight, outputs_[0].crtc, outputs_[1].crtc)
+ .c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc,
+ 0,
+ kSmallModeHeight + OutputConfigurator::kVerticalGap,
+ kBigModeId,
+ outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
observer_.Reset();
- EXPECT_TRUE(configurator_.SetDisplayMode(STATE_DUAL_MIRROR));
- EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL), delegate_->GetActionsAndClear());
- EXPECT_EQ(STATE_DUAL_EXTENDED, configurator_.output_state());
+ EXPECT_TRUE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_DUAL_MIRROR));
+ EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL), log_->GetActionsAndClear());
+ EXPECT_EQ(ui::OUTPUT_STATE_DUAL_EXTENDED, configurator_.output_state());
EXPECT_TRUE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
- // Setting STATE_DUAL_MIRROR should try to reconfigure.
+ // Setting OUTPUT_STATE_DUAL_MIRROR should try to reconfigure.
observer_.Reset();
- EXPECT_TRUE(configurator_.SetDisplayMode(STATE_DUAL_EXTENDED));
- EXPECT_EQ(JoinActions(NULL), delegate_->GetActionsAndClear());
+ EXPECT_TRUE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_DUAL_EXTENDED));
+ EXPECT_EQ(JoinActions(NULL), log_->GetActionsAndClear());
EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
// Set back to software mirror mode.
observer_.Reset();
- EXPECT_TRUE(configurator_.SetDisplayMode(STATE_DUAL_MIRROR));
- EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL),
- delegate_->GetActionsAndClear());
- EXPECT_EQ(STATE_DUAL_EXTENDED, configurator_.output_state());
+ EXPECT_TRUE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_DUAL_MIRROR));
+ EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL), log_->GetActionsAndClear());
+ EXPECT_EQ(ui::OUTPUT_STATE_DUAL_EXTENDED, configurator_.output_state());
EXPECT_TRUE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
// Disconnect the second output.
observer_.Reset();
UpdateOutputs(1, true);
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- kUngrab, kProjectingOff, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(
+ kSmallModeWidth, kSmallModeHeight, outputs_[0].crtc, 0).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
}
TEST_F(OutputConfiguratorTest, SetDisplayPower) {
InitWithSingleOutput();
- state_controller_.set_state(STATE_DUAL_MIRROR);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_MIRROR);
observer_.Reset();
UpdateOutputs(2, true);
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kSmallModeId,
- outputs_[1].output).c_str(),
- kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(
+ outputs_[1].crtc, 0, 0, kSmallModeId, outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
observer_.Reset();
configurator_.SetDisplayPower(DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON,
OutputConfigurator::kSetDisplayPowerNoFlags);
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kBigModeWidth, kBigModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, 0,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kBigModeId,
- outputs_[1].output).c_str(),
- kForceDPMS, kUngrab, NULL),
- delegate_->GetActionsAndClear());
- EXPECT_EQ(STATE_SINGLE, configurator_.output_state());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(
+ kBigModeWidth, kBigModeHeight, outputs_[0].crtc, outputs_[1].crtc)
+ .c_str(),
+ GetCrtcAction(outputs_[0].crtc, 0, 0, 0, outputs_[0].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc, 0, 0, kBigModeId, outputs_[1].output)
+ .c_str(),
+ kForceDPMS,
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
+ EXPECT_EQ(ui::OUTPUT_STATE_SINGLE, configurator_.output_state());
EXPECT_EQ(1, observer_.num_changes());
// When all displays are turned off, the framebuffer should switch back
observer_.Reset();
configurator_.SetDisplayPower(DISPLAY_POWER_ALL_OFF,
OutputConfigurator::kSetDisplayPowerNoFlags);
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, 0,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, 0,
- outputs_[1].output).c_str(),
- kUngrab, NULL),
- delegate_->GetActionsAndClear());
- EXPECT_EQ(STATE_DUAL_MIRROR, configurator_.output_state());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(outputs_[0].crtc, 0, 0, 0, outputs_[0].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc, 0, 0, 0, outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
+ EXPECT_EQ(ui::OUTPUT_STATE_DUAL_MIRROR, configurator_.output_state());
EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
observer_.Reset();
configurator_.SetDisplayPower(DISPLAY_POWER_ALL_ON,
OutputConfigurator::kSetDisplayPowerNoFlags);
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kSmallModeId,
- outputs_[1].output).c_str(),
- kForceDPMS, kUngrab, NULL),
- delegate_->GetActionsAndClear());
- EXPECT_EQ(STATE_DUAL_MIRROR, configurator_.output_state());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(
+ outputs_[1].crtc, 0, 0, kSmallModeId, outputs_[1].output).c_str(),
+ kForceDPMS,
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
+ EXPECT_EQ(ui::OUTPUT_STATE_DUAL_MIRROR, configurator_.output_state());
EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
// Get rid of shared modes to force software mirroring.
outputs_[1].mode_infos.erase(kSmallModeId);
- state_controller_.set_state(STATE_DUAL_MIRROR);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_MIRROR);
observer_.Reset();
UpdateOutputs(2, true);
const int kDualHeight =
kSmallModeHeight + OutputConfigurator::kVerticalGap + kBigModeHeight;
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(kBigModeWidth, kDualHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0,
- kSmallModeHeight + OutputConfigurator::kVerticalGap,
- kBigModeId, outputs_[1].output).c_str(),
- kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
- EXPECT_EQ(STATE_DUAL_EXTENDED, configurator_.output_state());
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(
+ kBigModeWidth, kDualHeight, outputs_[0].crtc, outputs_[1].crtc)
+ .c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc,
+ 0,
+ kSmallModeHeight + OutputConfigurator::kVerticalGap,
+ kBigModeId,
+ outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
+ EXPECT_EQ(ui::OUTPUT_STATE_DUAL_EXTENDED, configurator_.output_state());
EXPECT_TRUE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
observer_.Reset();
configurator_.SetDisplayPower(DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON,
OutputConfigurator::kSetDisplayPowerNoFlags);
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kBigModeWidth, kBigModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, 0,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kBigModeId,
- outputs_[1].output).c_str(),
- kForceDPMS, kUngrab, NULL),
- delegate_->GetActionsAndClear());
- EXPECT_EQ(STATE_SINGLE, configurator_.output_state());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(
+ kBigModeWidth, kBigModeHeight, outputs_[0].crtc, outputs_[1].crtc)
+ .c_str(),
+ GetCrtcAction(outputs_[0].crtc, 0, 0, 0, outputs_[0].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc, 0, 0, kBigModeId, outputs_[1].output)
+ .c_str(),
+ kForceDPMS,
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
+ EXPECT_EQ(ui::OUTPUT_STATE_SINGLE, configurator_.output_state());
EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
observer_.Reset();
configurator_.SetDisplayPower(DISPLAY_POWER_ALL_OFF,
OutputConfigurator::kSetDisplayPowerNoFlags);
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kBigModeWidth, kDualHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, 0,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0,
- kSmallModeHeight + OutputConfigurator::kVerticalGap,
- 0, outputs_[1].output).c_str(),
- kUngrab, NULL),
- delegate_->GetActionsAndClear());
- EXPECT_EQ(STATE_DUAL_EXTENDED, configurator_.output_state());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(
+ kBigModeWidth, kDualHeight, outputs_[0].crtc, outputs_[1].crtc)
+ .c_str(),
+ GetCrtcAction(outputs_[0].crtc, 0, 0, 0, outputs_[0].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc,
+ 0,
+ kSmallModeHeight + OutputConfigurator::kVerticalGap,
+ 0,
+ outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
+ EXPECT_EQ(ui::OUTPUT_STATE_DUAL_EXTENDED, configurator_.output_state());
EXPECT_TRUE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
observer_.Reset();
configurator_.SetDisplayPower(DISPLAY_POWER_ALL_ON,
OutputConfigurator::kSetDisplayPowerNoFlags);
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kBigModeWidth, kDualHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0,
- kSmallModeHeight + OutputConfigurator::kVerticalGap,
- kBigModeId, outputs_[1].output).c_str(),
- kForceDPMS, kUngrab, NULL),
- delegate_->GetActionsAndClear());
- EXPECT_EQ(STATE_DUAL_EXTENDED, configurator_.output_state());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(
+ kBigModeWidth, kDualHeight, outputs_[0].crtc, outputs_[1].crtc)
+ .c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc,
+ 0,
+ kSmallModeHeight + OutputConfigurator::kVerticalGap,
+ kBigModeId,
+ outputs_[1].output).c_str(),
+ kForceDPMS,
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
+ EXPECT_EQ(ui::OUTPUT_STATE_DUAL_EXTENDED, configurator_.output_state());
EXPECT_TRUE(mirroring_controller_.software_mirroring_enabled());
EXPECT_EQ(1, observer_.num_changes());
}
-TEST_F(OutputConfiguratorTest, Casting) {
- InitWithSingleOutput();
-
- // Notify configurator that casting session is started.
- configurator_.OnCastingSessionStartedOrStopped(true);
- EXPECT_EQ(kProjectingOn, delegate_->GetActionsAndClear());
-
- // Verify that the configurator keeps a count of active casting sessions
- // instead of treating it as a single global state.
- configurator_.OnCastingSessionStartedOrStopped(true);
- EXPECT_EQ(kProjectingOn, delegate_->GetActionsAndClear());
- configurator_.OnCastingSessionStartedOrStopped(false);
- EXPECT_EQ(kProjectingOn, delegate_->GetActionsAndClear());
-
- // Turn all displays off and check that projecting is not turned off.
- configurator_.SetDisplayPower(DISPLAY_POWER_ALL_OFF,
- OutputConfigurator::kSetDisplayPowerNoFlags);
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, 0,
- outputs_[0].output).c_str(),
- kUngrab, NULL),
- delegate_->GetActionsAndClear());
-
- // Turn all displays back on.
- configurator_.SetDisplayPower(DISPLAY_POWER_ALL_ON,
- OutputConfigurator::kSetDisplayPowerNoFlags);
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- kForceDPMS, kUngrab, NULL),
- delegate_->GetActionsAndClear());
-
- // Notify configurator that casting session is ended.
- configurator_.OnCastingSessionStartedOrStopped(false);
- EXPECT_EQ(kProjectingOff, delegate_->GetActionsAndClear());
-}
-
TEST_F(OutputConfiguratorTest, SuspendAndResume) {
InitWithSingleOutput();
// on. The configurator should still reprobe on resume in case a display
// was connected while suspended.
configurator_.SuspendDisplays();
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
configurator_.ResumeDisplays();
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- kForceDPMS, kUngrab, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(
+ kSmallModeWidth, kSmallModeHeight, outputs_[0].crtc, 0).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ kForceDPMS,
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
// Now turn the display off before suspending and check that the
// configurator turns it back on and syncs with the server.
configurator_.SetDisplayPower(DISPLAY_POWER_ALL_OFF,
OutputConfigurator::kSetDisplayPowerNoFlags);
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, 0,
- outputs_[0].output).c_str(),
- kUngrab, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(
+ kSmallModeWidth, kSmallModeHeight, outputs_[0].crtc, 0).c_str(),
+ GetCrtcAction(outputs_[0].crtc, 0, 0, 0, outputs_[0].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
configurator_.SuspendDisplays();
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- kForceDPMS, kUngrab, kSync, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(
+ kSmallModeWidth, kSmallModeHeight, outputs_[0].crtc, 0).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ kForceDPMS,
+ kUngrab,
+ kSync,
+ NULL),
+ log_->GetActionsAndClear());
configurator_.ResumeDisplays();
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- kForceDPMS, kUngrab, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(
+ kSmallModeWidth, kSmallModeHeight, outputs_[0].crtc, 0).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ kForceDPMS,
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
// If a second, external display is connected, the displays shouldn't be
// powered back on before suspending.
- state_controller_.set_state(STATE_DUAL_MIRROR);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_MIRROR);
UpdateOutputs(2, true);
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kSmallModeId,
- outputs_[1].output).c_str(),
- kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(
+ outputs_[1].crtc, 0, 0, kSmallModeId, outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
configurator_.SetDisplayPower(DISPLAY_POWER_ALL_OFF,
OutputConfigurator::kSetDisplayPowerNoFlags);
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, 0,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, 0,
- outputs_[1].output).c_str(),
- kUngrab, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(outputs_[0].crtc, 0, 0, 0, outputs_[0].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc, 0, 0, 0, outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
configurator_.SuspendDisplays();
EXPECT_EQ(JoinActions(kGrab, kUngrab, kSync, NULL),
- delegate_->GetActionsAndClear());
+ log_->GetActionsAndClear());
// If a display is disconnected while suspended, the configurator should
// pick up the change.
UpdateOutputs(1, false);
configurator_.ResumeDisplays();
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, 0,
- outputs_[0].output).c_str(),
- kUngrab, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(
+ kSmallModeWidth, kSmallModeHeight, outputs_[0].crtc, 0).c_str(),
+ GetCrtcAction(outputs_[0].crtc, 0, 0, 0, outputs_[0].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
}
TEST_F(OutputConfiguratorTest, Headless) {
UpdateOutputs(0, false);
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
configurator_.Init(false);
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
configurator_.Start(0);
- EXPECT_EQ(JoinActions(kGrab, kInitXRandR, kForceDPMS, kUngrab,
- kProjectingOff, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(JoinActions(kGrab, kInitXRandR, kForceDPMS, kUngrab, NULL),
+ log_->GetActionsAndClear());
// Not much should happen when the display power state is changed while
// no displays are connected.
configurator_.SetDisplayPower(DISPLAY_POWER_ALL_OFF,
OutputConfigurator::kSetDisplayPowerNoFlags);
- EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL), delegate_->GetActionsAndClear());
+ EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL), log_->GetActionsAndClear());
configurator_.SetDisplayPower(DISPLAY_POWER_ALL_ON,
OutputConfigurator::kSetDisplayPowerNoFlags);
EXPECT_EQ(JoinActions(kGrab, kForceDPMS, kUngrab, NULL),
- delegate_->GetActionsAndClear());
+ log_->GetActionsAndClear());
// Connect an external display and check that it's configured correctly.
outputs_[0] = outputs_[1];
UpdateOutputs(1, true);
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(kBigModeWidth, kBigModeHeight,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kBigModeId,
- outputs_[0].output).c_str(),
- kUngrab, kProjectingOff, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(
+ kBigModeWidth, kBigModeHeight, outputs_[0].crtc, 0).c_str(),
+ GetCrtcAction(outputs_[0].crtc, 0, 0, kBigModeId, outputs_[0].output)
+ .c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
}
TEST_F(OutputConfiguratorTest, StartWithTwoOutputs) {
UpdateOutputs(2, false);
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
configurator_.Init(false);
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
- state_controller_.set_state(STATE_DUAL_MIRROR);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_MIRROR);
configurator_.Start(0);
- EXPECT_EQ(JoinActions(kGrab, kInitXRandR,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kSmallModeId,
- outputs_[1].output).c_str(),
- kForceDPMS, kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ kInitXRandR,
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(
+ outputs_[1].crtc, 0, 0, kSmallModeId, outputs_[1].output).c_str(),
+ kForceDPMS,
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
}
TEST_F(OutputConfiguratorTest, InvalidOutputStates) {
UpdateOutputs(0, false);
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
configurator_.Init(false);
configurator_.Start(0);
observer_.Reset();
- EXPECT_TRUE(configurator_.SetDisplayMode(STATE_HEADLESS));
- EXPECT_FALSE(configurator_.SetDisplayMode(STATE_SINGLE));
- EXPECT_FALSE(configurator_.SetDisplayMode(STATE_DUAL_MIRROR));
- EXPECT_FALSE(configurator_.SetDisplayMode(STATE_DUAL_EXTENDED));
+ EXPECT_TRUE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_HEADLESS));
+ EXPECT_FALSE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_SINGLE));
+ EXPECT_FALSE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_DUAL_MIRROR));
+ EXPECT_FALSE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_DUAL_EXTENDED));
EXPECT_EQ(1, observer_.num_changes());
EXPECT_EQ(3, observer_.num_failures());
UpdateOutputs(1, true);
observer_.Reset();
- EXPECT_FALSE(configurator_.SetDisplayMode(STATE_HEADLESS));
- EXPECT_TRUE(configurator_.SetDisplayMode(STATE_SINGLE));
- EXPECT_FALSE(configurator_.SetDisplayMode(STATE_DUAL_MIRROR));
- EXPECT_FALSE(configurator_.SetDisplayMode(STATE_DUAL_EXTENDED));
+ EXPECT_FALSE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_HEADLESS));
+ EXPECT_TRUE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_SINGLE));
+ EXPECT_FALSE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_DUAL_MIRROR));
+ EXPECT_FALSE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_DUAL_EXTENDED));
EXPECT_EQ(1, observer_.num_changes());
EXPECT_EQ(3, observer_.num_failures());
- state_controller_.set_state(STATE_DUAL_EXTENDED);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_EXTENDED);
UpdateOutputs(2, true);
observer_.Reset();
- EXPECT_FALSE(configurator_.SetDisplayMode(STATE_HEADLESS));
- EXPECT_FALSE(configurator_.SetDisplayMode(STATE_SINGLE));
- EXPECT_TRUE(configurator_.SetDisplayMode(STATE_DUAL_MIRROR));
- EXPECT_TRUE(configurator_.SetDisplayMode(STATE_DUAL_EXTENDED));
+ EXPECT_FALSE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_HEADLESS));
+ EXPECT_FALSE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_SINGLE));
+ EXPECT_TRUE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_DUAL_MIRROR));
+ EXPECT_TRUE(configurator_.SetDisplayMode(ui::OUTPUT_STATE_DUAL_EXTENDED));
EXPECT_EQ(2, observer_.num_changes());
EXPECT_EQ(2, observer_.num_failures());
}
outputs_[0].has_display_id = false;
UpdateOutputs(2, false);
configurator_.Init(false);
- state_controller_.set_state(STATE_DUAL_MIRROR);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_MIRROR);
configurator_.Start(0);
- EXPECT_EQ(STATE_DUAL_EXTENDED, configurator_.output_state());
+ EXPECT_EQ(ui::OUTPUT_STATE_DUAL_EXTENDED, configurator_.output_state());
}
TEST_F(OutputConfiguratorTest, GetOutputStateForDisplaysWithId) {
outputs_[0].has_display_id = true;
UpdateOutputs(2, false);
configurator_.Init(false);
- state_controller_.set_state(STATE_DUAL_MIRROR);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_MIRROR);
configurator_.Start(0);
- EXPECT_EQ(STATE_DUAL_MIRROR, configurator_.output_state());
+ EXPECT_EQ(ui::OUTPUT_STATE_DUAL_MIRROR, configurator_.output_state());
}
TEST_F(OutputConfiguratorTest, AvoidUnnecessaryProbes) {
// the output change events don't trigger an additional probe, which can
// block the UI thread.
test_api_.SendScreenChangeEvent();
- EXPECT_EQ(kUpdateXRandR, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kUpdateXRandR, log_->GetActionsAndClear());
test_api_.SendOutputChangeEvent(
outputs_[0].output, outputs_[0].crtc, outputs_[0].current_mode, true);
test_api_.SendOutputChangeEvent(
outputs_[1].output, outputs_[1].crtc, outputs_[1].current_mode, false);
EXPECT_FALSE(test_api_.TriggerConfigureTimeout());
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
// Send an event stating that the second output is connected and check
// that it gets updated.
- state_controller_.set_state(STATE_DUAL_MIRROR);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_MIRROR);
UpdateOutputs(2, false);
test_api_.SendOutputChangeEvent(
outputs_[1].output, outputs_[1].crtc, outputs_[1].current_mode, true);
EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kSmallModeId,
- outputs_[1].output).c_str(),
- kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(
+ outputs_[1].crtc, 0, 0, kSmallModeId, outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
// An event about the second output changing modes should trigger another
// reconfigure.
test_api_.SendOutputChangeEvent(
outputs_[1].output, outputs_[1].crtc, outputs_[1].native_mode, true);
EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kSmallModeId,
- outputs_[1].output).c_str(),
- kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(
+ outputs_[1].crtc, 0, 0, kSmallModeId, outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
// Disconnect the second output.
UpdateOutputs(1, true);
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- kUngrab, kProjectingOff, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(
+ kSmallModeWidth, kSmallModeHeight, outputs_[0].crtc, 0).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
// An additional event about the second output being disconnected should
// be ignored.
test_api_.SendOutputChangeEvent(
outputs_[1].output, outputs_[1].crtc, outputs_[1].current_mode, false);
EXPECT_FALSE(test_api_.TriggerConfigureTimeout());
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
// Lower the limit for which the delegate will succeed, which should result
// in the second output sticking with its native mode.
- delegate_->set_max_configurable_pixels(1);
+ native_display_delegate_->set_max_configurable_pixels(1);
UpdateOutputs(2, true);
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kSmallModeId,
- outputs_[1].output).c_str(),
- GetFramebufferAction(kBigModeWidth,
- kSmallModeHeight + kBigModeHeight +
- OutputConfigurator::kVerticalGap,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, kSmallModeHeight +
- OutputConfigurator::kVerticalGap, kBigModeId,
- outputs_[1].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, kSmallModeHeight +
- OutputConfigurator::kVerticalGap, kSmallModeId,
- outputs_[1].output).c_str(),
- kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(
+ outputs_[1].crtc, 0, 0, kSmallModeId, outputs_[1].output).c_str(),
+ GetFramebufferAction(kBigModeWidth,
+ kSmallModeHeight + kBigModeHeight +
+ OutputConfigurator::kVerticalGap,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc,
+ 0,
+ kSmallModeHeight + OutputConfigurator::kVerticalGap,
+ kBigModeId,
+ outputs_[1].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc,
+ 0,
+ kSmallModeHeight + OutputConfigurator::kVerticalGap,
+ kSmallModeId,
+ outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
// A change event reporting a mode change on the second output should
// trigger another reconfigure.
- delegate_->set_max_configurable_pixels(0);
+ native_display_delegate_->set_max_configurable_pixels(0);
test_api_.SendOutputChangeEvent(
outputs_[1].output, outputs_[1].crtc, outputs_[1].mirror_mode, true);
EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
- EXPECT_EQ(JoinActions(kGrab,
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kSmallModeId,
- outputs_[1].output).c_str(),
- kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(
+ outputs_[1].crtc, 0, 0, kSmallModeId, outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
}
TEST_F(OutputConfiguratorTest, UpdateCachedOutputsEvenAfterFailure) {
// After connecting a second output, check that it shows up in
// |cached_outputs_| even if an invalid state is requested.
- state_controller_.set_state(STATE_SINGLE);
+ state_controller_.set_state(ui::OUTPUT_STATE_SINGLE);
UpdateOutputs(2, true);
cached = &test_api_.cached_outputs();
ASSERT_EQ(static_cast<size_t>(2), cached->size());
// The small mode should be added to the internal output when requesting
// mirrored mode.
UpdateOutputs(2, false);
- state_controller_.set_state(STATE_DUAL_MIRROR);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_MIRROR);
configurator_.Init(true /* is_panel_fitting_enabled */);
configurator_.Start(0);
- EXPECT_EQ(STATE_DUAL_MIRROR, configurator_.output_state());
- EXPECT_EQ(JoinActions(kGrab, kInitXRandR,
- GetAddOutputModeAction(
- outputs_[0].output, kSmallModeId).c_str(),
- GetFramebufferAction(kSmallModeWidth, kSmallModeHeight,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kSmallModeId,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kSmallModeId,
- outputs_[1].output).c_str(),
- kForceDPMS, kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(ui::OUTPUT_STATE_DUAL_MIRROR, configurator_.output_state());
+ EXPECT_EQ(
+ JoinActions(
+ kGrab,
+ kInitXRandR,
+ GetAddOutputModeAction(outputs_[0].output, kSmallModeId).c_str(),
+ GetFramebufferAction(kSmallModeWidth,
+ kSmallModeHeight,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kSmallModeId, outputs_[0].output).c_str(),
+ GetCrtcAction(
+ outputs_[1].crtc, 0, 0, kSmallModeId, outputs_[1].output).c_str(),
+ kForceDPMS,
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
// Both outputs should be using the small mode.
ASSERT_EQ(1, observer_.num_changes());
TEST_F(OutputConfiguratorTest, OutputProtection) {
configurator_.Init(false);
configurator_.Start(0);
- EXPECT_NE(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_NE(kNoActions, log_->GetActionsAndClear());
OutputConfigurator::OutputProtectionClientId id =
configurator_.RegisterOutputProtectionClient();
// One output.
UpdateOutputs(1, true);
- EXPECT_NE(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_NE(kNoActions, log_->GetActionsAndClear());
uint32_t link_mask = 0;
uint32_t protection_mask = 0;
EXPECT_TRUE(configurator_.QueryOutputProtectionStatus(id,
outputs_[0].display_id,
&link_mask,
&protection_mask));
- EXPECT_EQ(static_cast<uint32_t>(OUTPUT_TYPE_INTERNAL), link_mask);
- EXPECT_EQ(static_cast<uint32_t>(OUTPUT_PROTECTION_METHOD_NONE),
+ EXPECT_EQ(static_cast<uint32_t>(ui::OUTPUT_TYPE_INTERNAL), link_mask);
+ EXPECT_EQ(static_cast<uint32_t>(ui::OUTPUT_PROTECTION_METHOD_NONE),
protection_mask);
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
// Two outputs.
UpdateOutputs(2, true);
- EXPECT_NE(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_NE(kNoActions, log_->GetActionsAndClear());
EXPECT_TRUE(configurator_.QueryOutputProtectionStatus(id,
outputs_[1].display_id,
&link_mask,
&protection_mask));
- EXPECT_EQ(static_cast<uint32_t>(OUTPUT_TYPE_HDMI),
- link_mask);
- EXPECT_EQ(static_cast<uint32_t>(OUTPUT_PROTECTION_METHOD_NONE),
+ EXPECT_EQ(static_cast<uint32_t>(ui::OUTPUT_TYPE_HDMI), link_mask);
+ EXPECT_EQ(static_cast<uint32_t>(ui::OUTPUT_PROTECTION_METHOD_NONE),
protection_mask);
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
- EXPECT_TRUE(
- configurator_.EnableOutputProtection(id,
- outputs_[1].display_id,
- OUTPUT_PROTECTION_METHOD_HDCP));
- EXPECT_EQ(GetSetHDCPStateAction(outputs_[1].output, HDCP_STATE_DESIRED),
- delegate_->GetActionsAndClear());
+ EXPECT_TRUE(configurator_.EnableOutputProtection(
+ id, outputs_[1].display_id, ui::OUTPUT_PROTECTION_METHOD_HDCP));
+ EXPECT_EQ(GetSetHDCPStateAction(outputs_[1].output, ui::HDCP_STATE_DESIRED),
+ log_->GetActionsAndClear());
// Enable protection.
- delegate_->set_hdcp_state(HDCP_STATE_ENABLED);
+ native_display_delegate_->set_hdcp_state(ui::HDCP_STATE_ENABLED);
EXPECT_TRUE(configurator_.QueryOutputProtectionStatus(id,
outputs_[1].display_id,
&link_mask,
&protection_mask));
- EXPECT_EQ(static_cast<uint32_t>(OUTPUT_TYPE_HDMI), link_mask);
- EXPECT_EQ(static_cast<uint32_t>(OUTPUT_PROTECTION_METHOD_HDCP),
+ EXPECT_EQ(static_cast<uint32_t>(ui::OUTPUT_TYPE_HDMI), link_mask);
+ EXPECT_EQ(static_cast<uint32_t>(ui::OUTPUT_PROTECTION_METHOD_HDCP),
protection_mask);
- EXPECT_EQ(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
// Protections should be disabled after unregister.
configurator_.UnregisterOutputProtectionClient(id);
- EXPECT_EQ(GetSetHDCPStateAction(outputs_[1].output, HDCP_STATE_UNDESIRED),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(GetSetHDCPStateAction(outputs_[1].output, ui::HDCP_STATE_UNDESIRED),
+ log_->GetActionsAndClear());
}
TEST_F(OutputConfiguratorTest, OutputProtectionTwoClients) {
configurator_.Init(false);
configurator_.Start(0);
UpdateOutputs(2, true);
- EXPECT_NE(kNoActions, delegate_->GetActionsAndClear());
+ EXPECT_NE(kNoActions, log_->GetActionsAndClear());
// Clients never know state enableness for methods that they didn't request.
- EXPECT_TRUE(
- configurator_.EnableOutputProtection(client1,
- outputs_[1].display_id,
- OUTPUT_PROTECTION_METHOD_HDCP));
- EXPECT_EQ(GetSetHDCPStateAction(outputs_[1].output,
- HDCP_STATE_DESIRED).c_str(),
- delegate_->GetActionsAndClear());
- delegate_->set_hdcp_state(HDCP_STATE_ENABLED);
+ EXPECT_TRUE(configurator_.EnableOutputProtection(
+ client1, outputs_[1].display_id, ui::OUTPUT_PROTECTION_METHOD_HDCP));
+ EXPECT_EQ(
+ GetSetHDCPStateAction(outputs_[1].output, ui::HDCP_STATE_DESIRED).c_str(),
+ log_->GetActionsAndClear());
+ native_display_delegate_->set_hdcp_state(ui::HDCP_STATE_ENABLED);
uint32_t link_mask = 0;
uint32_t protection_mask = 0;
outputs_[1].display_id,
&link_mask,
&protection_mask));
- EXPECT_EQ(static_cast<uint32_t>(OUTPUT_TYPE_HDMI), link_mask);
- EXPECT_EQ(OUTPUT_PROTECTION_METHOD_HDCP, protection_mask);
+ EXPECT_EQ(static_cast<uint32_t>(ui::OUTPUT_TYPE_HDMI), link_mask);
+ EXPECT_EQ(ui::OUTPUT_PROTECTION_METHOD_HDCP, protection_mask);
EXPECT_TRUE(configurator_.QueryOutputProtectionStatus(client2,
outputs_[1].display_id,
&link_mask,
&protection_mask));
- EXPECT_EQ(static_cast<uint32_t>(OUTPUT_TYPE_HDMI), link_mask);
- EXPECT_EQ(OUTPUT_PROTECTION_METHOD_NONE, protection_mask);
+ EXPECT_EQ(static_cast<uint32_t>(ui::OUTPUT_TYPE_HDMI), link_mask);
+ EXPECT_EQ(ui::OUTPUT_PROTECTION_METHOD_NONE, protection_mask);
// Protections will be disabled only if no more clients request them.
- EXPECT_TRUE(
- configurator_.EnableOutputProtection(client2,
- outputs_[1].display_id,
- OUTPUT_PROTECTION_METHOD_NONE));
- EXPECT_EQ(GetSetHDCPStateAction(outputs_[1].output,
- HDCP_STATE_DESIRED).c_str(),
- delegate_->GetActionsAndClear());
- EXPECT_TRUE(
- configurator_.EnableOutputProtection(client1,
- outputs_[1].display_id,
- OUTPUT_PROTECTION_METHOD_NONE));
- EXPECT_EQ(GetSetHDCPStateAction(outputs_[1].output,
- HDCP_STATE_UNDESIRED).c_str(),
- delegate_->GetActionsAndClear());
+ EXPECT_TRUE(configurator_.EnableOutputProtection(
+ client2, outputs_[1].display_id, ui::OUTPUT_PROTECTION_METHOD_NONE));
+ EXPECT_EQ(
+ GetSetHDCPStateAction(outputs_[1].output, ui::HDCP_STATE_DESIRED).c_str(),
+ log_->GetActionsAndClear());
+ EXPECT_TRUE(configurator_.EnableOutputProtection(
+ client1, outputs_[1].display_id, ui::OUTPUT_PROTECTION_METHOD_NONE));
+ EXPECT_EQ(GetSetHDCPStateAction(outputs_[1].output, ui::HDCP_STATE_UNDESIRED)
+ .c_str(),
+ log_->GetActionsAndClear());
}
TEST_F(OutputConfiguratorTest, CTMForMultiScreens) {
UpdateOutputs(2, false);
configurator_.Init(false);
- state_controller_.set_state(STATE_DUAL_EXTENDED);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_EXTENDED);
configurator_.Start(0);
const int kDualHeight =
kSmallModeHeight + OutputConfigurator::kVerticalGap + kBigModeHeight;
const int kDualWidth = kBigModeWidth;
- OutputConfigurator::CoordinateTransformation ctm1 = delegate_->get_ctm(1);
- OutputConfigurator::CoordinateTransformation ctm2 = delegate_->get_ctm(2);
+ OutputConfigurator::CoordinateTransformation ctm1 =
+ touchscreen_delegate_->GetCTM(1);
+ OutputConfigurator::CoordinateTransformation ctm2 =
+ touchscreen_delegate_->GetCTM(2);
EXPECT_EQ(kSmallModeHeight - 1, round((kDualHeight - 1) * ctm1.y_scale));
EXPECT_EQ(0, round((kDualHeight - 1) * ctm1.y_offset));
configurator_.Init(false);
- // First test simply fails in STATE_SINGLE mode. This is probably
+ // First test simply fails in OUTPUT_STATE_SINGLE mode. This is probably
// unrealistic but the want to make sure any assumptions don't
// creep in.
- delegate_->set_max_configurable_pixels(
+ native_display_delegate_->set_max_configurable_pixels(
outputs_[0].mode_infos[kFirstMode + 2].width *
outputs_[0].mode_infos[kFirstMode + 2].height);
- state_controller_.set_state(STATE_SINGLE);
+ state_controller_.set_state(ui::OUTPUT_STATE_SINGLE);
UpdateOutputs(1, true);
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(2560, 1600,
- outputs_[0].crtc, 0).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kFirstMode,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kFirstMode + 3,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kFirstMode + 2,
- outputs_[0].output).c_str(),
- kUngrab, kProjectingOff, NULL),
- delegate_->GetActionsAndClear());
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(2560, 1600, outputs_[0].crtc, 0).c_str(),
+ GetCrtcAction(outputs_[0].crtc, 0, 0, kFirstMode, outputs_[0].output)
+ .c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kFirstMode + 3, outputs_[0].output)
+ .c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kFirstMode + 2, outputs_[0].output)
+ .c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
// This test should attempt to configure a mirror mode that will not succeed
// and should end up in extended mode.
- delegate_->set_max_configurable_pixels(
+ native_display_delegate_->set_max_configurable_pixels(
outputs_[0].mode_infos[kFirstMode + 3].width *
outputs_[0].mode_infos[kFirstMode + 3].height);
- state_controller_.set_state(STATE_DUAL_MIRROR);
+ state_controller_.set_state(ui::OUTPUT_STATE_DUAL_MIRROR);
UpdateOutputs(2, true);
- EXPECT_EQ(JoinActions(kUpdateXRandR, kGrab,
- GetFramebufferAction(
- outputs_[0].mode_infos[kFirstMode].width,
- outputs_[0].mode_infos[kFirstMode].height,
- outputs_[0].crtc,
- outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc,
- 0, 0, kFirstMode, outputs_[0].output).c_str(),
- // First mode tried is expected to fail and it will
- // retry wil the 4th mode in the list.
- GetCrtcAction(outputs_[0].crtc, 0, 0, kFirstMode + 3,
- outputs_[0].output).c_str(),
- // Then attempt to configure crtc1 with the first mode.
- GetCrtcAction(outputs_[1].crtc, 0, 0, kFirstMode,
- outputs_[1].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0, 0, kFirstMode + 3,
- outputs_[1].output).c_str(),
- // Since it was requested to go into mirror mode
- // and the configured modes were different, it
- // should now try and setup a valid configurable
- // extended mode.
- GetFramebufferAction(
- outputs_[0].mode_infos[kFirstMode].width,
- outputs_[0].mode_infos[kFirstMode].height +
- outputs_[1].mode_infos[kFirstMode].height +
- OutputConfigurator::kVerticalGap,
- outputs_[0].crtc, outputs_[1].crtc).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kFirstMode,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[0].crtc, 0, 0, kFirstMode + 3,
- outputs_[0].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0,
- outputs_[1].mode_infos[kFirstMode].height +
- OutputConfigurator::kVerticalGap, kFirstMode,
- outputs_[1].output).c_str(),
- GetCrtcAction(outputs_[1].crtc, 0,
- outputs_[1].mode_infos[kFirstMode].height +
- OutputConfigurator::kVerticalGap, kFirstMode + 3,
- outputs_[1].output).c_str(),
- kUngrab, kProjectingOn, NULL),
- delegate_->GetActionsAndClear());
-
+ EXPECT_EQ(
+ JoinActions(
+ kUpdateXRandR,
+ kGrab,
+ GetFramebufferAction(outputs_[0].mode_infos[kFirstMode].width,
+ outputs_[0].mode_infos[kFirstMode].height,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(outputs_[0].crtc, 0, 0, kFirstMode, outputs_[0].output)
+ .c_str(),
+ // First mode tried is expected to fail and it will
+ // retry wil the 4th mode in the list.
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kFirstMode + 3, outputs_[0].output)
+ .c_str(),
+ // Then attempt to configure crtc1 with the first mode.
+ GetCrtcAction(outputs_[1].crtc, 0, 0, kFirstMode, outputs_[1].output)
+ .c_str(),
+ GetCrtcAction(
+ outputs_[1].crtc, 0, 0, kFirstMode + 3, outputs_[1].output)
+ .c_str(),
+ // Since it was requested to go into mirror mode
+ // and the configured modes were different, it
+ // should now try and setup a valid configurable
+ // extended mode.
+ GetFramebufferAction(outputs_[0].mode_infos[kFirstMode].width,
+ outputs_[0].mode_infos[kFirstMode].height +
+ outputs_[1].mode_infos[kFirstMode].height +
+ OutputConfigurator::kVerticalGap,
+ outputs_[0].crtc,
+ outputs_[1].crtc).c_str(),
+ GetCrtcAction(outputs_[0].crtc, 0, 0, kFirstMode, outputs_[0].output)
+ .c_str(),
+ GetCrtcAction(
+ outputs_[0].crtc, 0, 0, kFirstMode + 3, outputs_[0].output)
+ .c_str(),
+ GetCrtcAction(outputs_[1].crtc,
+ 0,
+ outputs_[1].mode_infos[kFirstMode].height +
+ OutputConfigurator::kVerticalGap,
+ kFirstMode,
+ outputs_[1].output).c_str(),
+ GetCrtcAction(outputs_[1].crtc,
+ 0,
+ outputs_[1].mode_infos[kFirstMode].height +
+ OutputConfigurator::kVerticalGap,
+ kFirstMode + 3,
+ outputs_[1].output).c_str(),
+ kUngrab,
+ NULL),
+ log_->GetActionsAndClear());
}
} // namespace chromeos