Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(339)

Side by Side Diff: ui/display/chromeos/display_configurator_unittest.cc

Issue 1949753004: Revert of chromeos: Turn off displays on suspend (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert PS that actually landed: PS#11, not PS#12 Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/display/chromeos/display_configurator.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/display/chromeos/display_configurator.h" 5 #include "ui/display/chromeos/display_configurator.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 // No preparation is needed before suspending when the display is already 834 // No preparation is needed before suspending when the display is already
835 // on. The configurator should still reprobe on resume in case a display 835 // on. The configurator should still reprobe on resume in case a display
836 // was connected while suspended. 836 // was connected while suspended.
837 const gfx::Size framebuffer_size = configurator_.framebuffer_size(); 837 const gfx::Size framebuffer_size = configurator_.framebuffer_size();
838 DCHECK(!framebuffer_size.IsEmpty()); 838 DCHECK(!framebuffer_size.IsEmpty());
839 configurator_.SuspendDisplays(base::Bind( 839 configurator_.SuspendDisplays(base::Bind(
840 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this))); 840 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this)));
841 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult()); 841 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
842 EXPECT_EQ(framebuffer_size.ToString(), 842 EXPECT_EQ(framebuffer_size.ToString(),
843 configurator_.framebuffer_size().ToString()); 843 configurator_.framebuffer_size().ToString());
844 EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
845 configurator_.ResumeDisplays();
846 EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
844 EXPECT_EQ( 847 EXPECT_EQ(
845 JoinActions( 848 JoinActions(
846 kGrab, 849 kGrab,
847 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
848 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
849 kUngrab,
850 kSync,
851 NULL),
852 log_->GetActionsAndClear());
853 configurator_.ResumeDisplays();
854 EXPECT_EQ(
855 JoinActions(
856 kGrab,
857 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(), 850 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
858 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 851 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
859 kForceDPMS, 852 kForceDPMS,
860 kUngrab, 853 kUngrab,
861 NULL), 854 NULL),
862 log_->GetActionsAndClear()); 855 log_->GetActionsAndClear());
863 856
864 // Now turn the display off before suspending and check that the 857 // Now turn the display off before suspending and check that the
865 // configurator turns it back on and syncs with the server. 858 // configurator turns it back on and syncs with the server.
866 configurator_.SetDisplayPower( 859 configurator_.SetDisplayPower(
867 chromeos::DISPLAY_POWER_ALL_OFF, 860 chromeos::DISPLAY_POWER_ALL_OFF,
868 DisplayConfigurator::kSetDisplayPowerNoFlags, 861 DisplayConfigurator::kSetDisplayPowerNoFlags,
869 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback, 862 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
870 base::Unretained(this))); 863 base::Unretained(this)));
871 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult()); 864 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
872 EXPECT_EQ( 865 EXPECT_EQ(
873 JoinActions( 866 JoinActions(
874 kGrab, 867 kGrab,
875 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(), 868 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
876 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(), 869 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
877 kUngrab, 870 kUngrab,
878 NULL), 871 NULL),
879 log_->GetActionsAndClear()); 872 log_->GetActionsAndClear());
880 873
881 configurator_.SuspendDisplays(base::Bind( 874 configurator_.SuspendDisplays(base::Bind(
882 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this))); 875 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this)));
883 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult()); 876 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
884 EXPECT_EQ(kSync, log_->GetActionsAndClear());
885
886 configurator_.ResumeDisplays();
887 EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
888
889 configurator_.SetDisplayPower(
890 chromeos::DISPLAY_POWER_ALL_ON,
891 DisplayConfigurator::kSetDisplayPowerNoFlags,
892 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
893 base::Unretained(this)));
894 EXPECT_EQ( 877 EXPECT_EQ(
895 JoinActions( 878 JoinActions(
896 kGrab, 879 kGrab,
880 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
881 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
882 kForceDPMS,
883 kUngrab,
884 kSync,
885 NULL),
886 log_->GetActionsAndClear());
887
888 configurator_.ResumeDisplays();
889 EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
890 EXPECT_EQ(
891 JoinActions(
892 kGrab,
897 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(), 893 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
898 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 894 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
899 kForceDPMS, 895 kForceDPMS,
900 kUngrab, 896 kUngrab,
901 NULL), 897 NULL),
902 log_->GetActionsAndClear()); 898 log_->GetActionsAndClear());
903 899
900 // If a second, external display is connected, the displays shouldn't be
901 // powered back on before suspending.
904 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); 902 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_DUAL_MIRROR);
905 UpdateOutputs(2, true); 903 UpdateOutputs(2, true);
906 EXPECT_EQ( 904 EXPECT_EQ(
907 JoinActions( 905 JoinActions(
908 kGrab, 906 kGrab,
909 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1]) 907 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1])
910 .c_str(), 908 .c_str(),
911 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 909 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
912 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(), 910 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(),
913 kUngrab, 911 kUngrab,
914 NULL), 912 NULL),
915 log_->GetActionsAndClear()); 913 log_->GetActionsAndClear());
916 914
917 configurator_.SetDisplayPower( 915 configurator_.SetDisplayPower(
918 chromeos::DISPLAY_POWER_ALL_OFF, 916 chromeos::DISPLAY_POWER_ALL_OFF,
919 DisplayConfigurator::kSetDisplayPowerNoFlags, 917 DisplayConfigurator::kSetDisplayPowerNoFlags,
920 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback, 918 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
921 base::Unretained(this))); 919 base::Unretained(this)));
922 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult()); 920 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
923 EXPECT_EQ( 921 EXPECT_EQ(
924 JoinActions( 922 JoinActions(kGrab,
925 kGrab, 923 GetFramebufferAction(
926 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1]) 924 small_mode_.size(), &outputs_[0], &outputs_[1]).c_str(),
927 .c_str(), 925 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
928 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(), 926 GetCrtcAction(outputs_[1], NULL, gfx::Point(0, 0)).c_str(),
929 GetCrtcAction(outputs_[1], NULL, gfx::Point(0, 0)).c_str(), 927 kUngrab,
930 kUngrab, 928 NULL),
931 NULL),
932 log_->GetActionsAndClear()); 929 log_->GetActionsAndClear());
933 930
934 configurator_.SuspendDisplays(base::Bind( 931 configurator_.SuspendDisplays(base::Bind(
935 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this))); 932 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this)));
936 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult()); 933 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
937 EXPECT_EQ(kSync, log_->GetActionsAndClear()); 934 EXPECT_EQ(JoinActions(kGrab, kUngrab, kSync, NULL),
935 log_->GetActionsAndClear());
938 936
939 // If a display is disconnected while suspended, the configurator should 937 // If a display is disconnected while suspended, the configurator should
940 // pick up the change and only turn on the internal display. 938 // pick up the change.
941 UpdateOutputs(1, false); 939 UpdateOutputs(1, false);
942 configurator_.ResumeDisplays(); 940 configurator_.ResumeDisplays();
943 EXPECT_EQ(kNoActions, log_->GetActionsAndClear()); 941 EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
944
945 configurator_.SetDisplayPower(
946 chromeos::DISPLAY_POWER_ALL_ON,
947 DisplayConfigurator::kSetDisplayPowerNoFlags,
948 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
949 base::Unretained(this)));
950 EXPECT_EQ( 942 EXPECT_EQ(
951 JoinActions( 943 JoinActions(
952 kGrab, 944 kGrab,
953 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(), 945 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
954 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 946 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
955 kForceDPMS,
956 kUngrab, 947 kUngrab,
957 NULL), 948 NULL),
958 log_->GetActionsAndClear()); 949 log_->GetActionsAndClear());
959 } 950 }
960 951
961 TEST_F(DisplayConfiguratorTest, Headless) { 952 TEST_F(DisplayConfiguratorTest, Headless) {
962 UpdateOutputs(0, false); 953 UpdateOutputs(0, false);
963 EXPECT_EQ(kNoActions, log_->GetActionsAndClear()); 954 EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
964 Init(false); 955 Init(false);
965 EXPECT_EQ(kNoActions, log_->GetActionsAndClear()); 956 EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1207 TEST_F(DisplayConfiguratorTest, DoNotConfigureWithSuspendedDisplays) { 1198 TEST_F(DisplayConfiguratorTest, DoNotConfigureWithSuspendedDisplays) {
1208 InitWithSingleOutput(); 1199 InitWithSingleOutput();
1209 1200
1210 // The DisplayConfigurator may occasionally receive OnConfigurationChanged() 1201 // The DisplayConfigurator may occasionally receive OnConfigurationChanged()
1211 // after the displays have been suspended. This event should be ignored since 1202 // after the displays have been suspended. This event should be ignored since
1212 // the DisplayConfigurator will force a probe and reconfiguration of displays 1203 // the DisplayConfigurator will force a probe and reconfiguration of displays
1213 // at resume time. 1204 // at resume time.
1214 configurator_.SuspendDisplays(base::Bind( 1205 configurator_.SuspendDisplays(base::Bind(
1215 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this))); 1206 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this)));
1216 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult()); 1207 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
1217 EXPECT_EQ( 1208 EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
1218 JoinActions(
1219 kGrab,
1220 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
1221 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
1222 kUngrab,
1223 kSync,
1224 NULL),
1225 log_->GetActionsAndClear());
1226 1209
1227 // The configuration timer should not be started when the displays 1210 // The configuration timer should not be started when the displays
1228 // are suspended. 1211 // are suspended.
1229 configurator_.OnConfigurationChanged(); 1212 configurator_.OnConfigurationChanged();
1230 EXPECT_FALSE(test_api_.TriggerConfigureTimeout()); 1213 EXPECT_FALSE(test_api_.TriggerConfigureTimeout());
1231 EXPECT_EQ(kNoActions, log_->GetActionsAndClear()); 1214 EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
1232 1215
1233 // Calls to SetDisplayPower should do nothing if the power state doesn't 1216 // Calls to SetDisplayPower and SetDisplayMode should be successful.
1234 // change.
1235 configurator_.SetDisplayPower( 1217 configurator_.SetDisplayPower(
1236 chromeos::DISPLAY_POWER_ALL_OFF, 1218 chromeos::DISPLAY_POWER_ALL_OFF,
1237 DisplayConfigurator::kSetDisplayPowerNoFlags, 1219 DisplayConfigurator::kSetDisplayPowerNoFlags,
1238 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback, 1220 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
1239 base::Unretained(this))); 1221 base::Unretained(this)));
1240 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult()); 1222 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
1241 EXPECT_EQ(kNoActions, log_->GetActionsAndClear()); 1223 EXPECT_EQ(
1224 JoinActions(
1225 kGrab,
1226 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
1227 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
1228 kUngrab,
1229 NULL),
1230 log_->GetActionsAndClear());
1242 configurator_.SetDisplayPower( 1231 configurator_.SetDisplayPower(
1243 chromeos::DISPLAY_POWER_ALL_ON, 1232 chromeos::DISPLAY_POWER_ALL_ON,
1244 DisplayConfigurator::kSetDisplayPowerNoFlags, 1233 DisplayConfigurator::kSetDisplayPowerNoFlags,
1245 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback, 1234 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
1246 base::Unretained(this))); 1235 base::Unretained(this)));
1247 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult()); 1236 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
1248 EXPECT_EQ( 1237 EXPECT_EQ(
1249 JoinActions( 1238 JoinActions(
1250 kGrab, 1239 kGrab,
1251 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(), 1240 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
1252 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 1241 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
1253 kForceDPMS, 1242 kForceDPMS,
1254 kUngrab, 1243 kUngrab,
1255 NULL), 1244 NULL),
1256 log_->GetActionsAndClear()); 1245 log_->GetActionsAndClear());
1257 1246
1258 UpdateOutputs(2, false); 1247 UpdateOutputs(2, false);
1259 configurator_.SetDisplayMode(MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); 1248 configurator_.SetDisplayMode(MULTIPLE_DISPLAY_STATE_DUAL_MIRROR);
1260 EXPECT_EQ( 1249 EXPECT_EQ(
1261 JoinActions( 1250 JoinActions(
1262 kGrab, 1251 kGrab,
1263 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1]) 1252 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1])
1264 .c_str(), 1253 .c_str(),
1265 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 1254 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
1266 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(), 1255 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(),
1267 kUngrab, 1256 kUngrab,
1268 NULL), 1257 NULL),
1269 log_->GetActionsAndClear()); 1258 log_->GetActionsAndClear());
1270 1259
1271 // The DisplayConfigurator should do nothing at resume time if there is no 1260 // The DisplayConfigurator should force a probe and reconfiguration at resume
1272 // state change. 1261 // time.
1273 UpdateOutputs(1, false); 1262 UpdateOutputs(1, false);
1274 configurator_.ResumeDisplays(); 1263 configurator_.ResumeDisplays();
1275 EXPECT_EQ(kNoActions, log_->GetActionsAndClear()); 1264 EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
1265 EXPECT_EQ(
1266 JoinActions(
1267 kGrab,
1268 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
1269 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
1270 kForceDPMS,
1271 kUngrab,
1272 NULL),
1273 log_->GetActionsAndClear());
1276 1274
1277 // If a configuration task is pending when the displays are suspended, that 1275 // If a configuration task is pending when the displays are suspended, that
1278 // task should not run either and the timer should be stopped. The displays 1276 // task should not run either and the timer should be stopped.
1279 // should be turned off by suspend.
1280 configurator_.OnConfigurationChanged(); 1277 configurator_.OnConfigurationChanged();
1281 configurator_.SuspendDisplays(base::Bind( 1278 configurator_.SuspendDisplays(base::Bind(
1282 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this))); 1279 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this)));
1283 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult()); 1280 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
1284 EXPECT_EQ( 1281 EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
1285 JoinActions(
1286 kGrab,
1287 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
1288 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
1289 kUngrab,
1290 kSync,
1291 NULL),
1292 log_->GetActionsAndClear());
1293 1282
1294 EXPECT_FALSE(test_api_.TriggerConfigureTimeout()); 1283 EXPECT_FALSE(test_api_.TriggerConfigureTimeout());
1295 EXPECT_EQ(kNoActions, log_->GetActionsAndClear()); 1284 EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
1296 1285
1297 configurator_.ResumeDisplays(); 1286 configurator_.ResumeDisplays();
1287 EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
1298 EXPECT_EQ( 1288 EXPECT_EQ(
1299 JoinActions( 1289 JoinActions(
1300 kGrab, 1290 kGrab,
1301 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(), 1291 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
1302 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 1292 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
1303 kForceDPMS, 1293 kForceDPMS,
1304 kUngrab, 1294 kUngrab,
1305 NULL), 1295 NULL),
1306 log_->GetActionsAndClear()); 1296 log_->GetActionsAndClear());
1307 } 1297 }
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
1567 kGrab, 1557 kGrab,
1568 GetFramebufferAction(big_mode_.size(), &outputs_[0], &outputs_[1]) 1558 GetFramebufferAction(big_mode_.size(), &outputs_[0], &outputs_[1])
1569 .c_str(), 1559 .c_str(),
1570 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(), 1560 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
1571 GetCrtcAction(outputs_[1], &big_mode_, gfx::Point(0, 0)).c_str(), 1561 GetCrtcAction(outputs_[1], &big_mode_, gfx::Point(0, 0)).c_str(),
1572 kForceDPMS, 1562 kForceDPMS,
1573 kUngrab, 1563 kUngrab,
1574 NULL), 1564 NULL),
1575 log_->GetActionsAndClear()); 1565 log_->GetActionsAndClear());
1576 1566
1577 // Suspend and resume the system. Resuming should restore the previous power 1567 // Suspend and resume the system. Resuming should post a task to restore the
1578 // state and force a probe. Suspend should turn off the displays since an 1568 // previous power state, additionally forcing a probe.
1579 // external monitor is connected.
1580 configurator_.SuspendDisplays(base::Bind( 1569 configurator_.SuspendDisplays(base::Bind(
1581 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this))); 1570 &DisplayConfiguratorTest::OnConfiguredCallback, base::Unretained(this)));
1582 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult()); 1571 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
1583 EXPECT_EQ(2, observer_.num_changes()); 1572 configurator_.ResumeDisplays();
1584 EXPECT_EQ(
1585 JoinActions(
1586 kGrab,
1587 GetFramebufferAction(small_mode_.size(), &outputs_[0],
1588 &outputs_[1]).c_str(),
1589 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
1590 GetCrtcAction(outputs_[1], NULL, gfx::Point(0, 0)).c_str(),
1591 kUngrab,
1592 kSync,
1593 NULL),
1594 log_->GetActionsAndClear());
1595 1573
1596 // Before the task runs, exit docked mode. 1574 // Before the task runs, exit docked mode.
1597 configurator_.SetDisplayPower( 1575 configurator_.SetDisplayPower(
1598 chromeos::DISPLAY_POWER_ALL_ON, 1576 chromeos::DISPLAY_POWER_ALL_ON,
1599 DisplayConfigurator::kSetDisplayPowerNoFlags, 1577 DisplayConfigurator::kSetDisplayPowerNoFlags,
1600 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback, 1578 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
1601 base::Unretained(this))); 1579 base::Unretained(this)));
1602 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult()); 1580 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
1603 EXPECT_EQ(3, observer_.num_changes()); 1581 EXPECT_EQ(2, observer_.num_changes());
1604 EXPECT_EQ(0, observer_.num_failures()); 1582 EXPECT_EQ(0, observer_.num_failures());
1605 EXPECT_EQ( 1583 EXPECT_EQ(
1606 JoinActions( 1584 JoinActions(
1607 kGrab, 1585 kGrab,
1608 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1]) 1586 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1])
1609 .c_str(), 1587 .c_str(),
1610 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 1588 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
1611 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(), 1589 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(),
1612 kForceDPMS, 1590 kForceDPMS,
1613 kUngrab, 1591 kUngrab,
1614 NULL), 1592 NULL),
1615 log_->GetActionsAndClear()); 1593 log_->GetActionsAndClear());
1616 1594
1617 // Check that the display states are not changed after resuming. 1595 // Check that the task doesn't restore the old internal-off-external-on power
1618 configurator_.ResumeDisplays(); 1596 // state.
1619 EXPECT_EQ(kNoActions, log_->GetActionsAndClear()); 1597 EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
1598 EXPECT_EQ(
1599 JoinActions(
1600 kGrab,
1601 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1])
1602 .c_str(),
1603 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
1604 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(),
1605 kForceDPMS,
1606 kUngrab,
1607 NULL),
1608 log_->GetActionsAndClear());
1620 } 1609 }
1621 1610
1622 TEST_F(DisplayConfiguratorTest, ExternalControl) { 1611 TEST_F(DisplayConfiguratorTest, ExternalControl) {
1623 InitWithSingleOutput(); 1612 InitWithSingleOutput();
1624 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_SINGLE); 1613 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_SINGLE);
1625 configurator_.RelinquishControl( 1614 configurator_.RelinquishControl(
1626 base::Bind(&DisplayConfiguratorTest::OnDisplayControlUpdated, 1615 base::Bind(&DisplayConfiguratorTest::OnDisplayControlUpdated,
1627 base::Unretained(this))); 1616 base::Unretained(this)));
1628 EXPECT_EQ(CALLBACK_SUCCESS, PopDisplayControlResult()); 1617 EXPECT_EQ(CALLBACK_SUCCESS, PopDisplayControlResult());
1629 EXPECT_EQ( 1618 EXPECT_EQ(
1630 JoinActions( 1619 JoinActions(
1631 kRelinquishDisplayControl, 1620 kRelinquishDisplayControl,
1632 NULL), 1621 NULL),
1633 log_->GetActionsAndClear()); 1622 log_->GetActionsAndClear());
1634 configurator_.TakeControl( 1623 configurator_.TakeControl(
1635 base::Bind(&DisplayConfiguratorTest::OnDisplayControlUpdated, 1624 base::Bind(&DisplayConfiguratorTest::OnDisplayControlUpdated,
1636 base::Unretained(this))); 1625 base::Unretained(this)));
1637 EXPECT_EQ(CALLBACK_SUCCESS, PopDisplayControlResult()); 1626 EXPECT_EQ(CALLBACK_SUCCESS, PopDisplayControlResult());
1638 EXPECT_EQ(JoinActions(kTakeDisplayControl, kGrab, 1627 EXPECT_EQ(JoinActions(kTakeDisplayControl, kGrab,
1639 GetFramebufferAction(small_mode_.size(), &outputs_[0], 1628 GetFramebufferAction(small_mode_.size(), &outputs_[0],
1640 nullptr).c_str(), 1629 nullptr).c_str(),
1641 GetCrtcAction(outputs_[0], &small_mode_, 1630 GetCrtcAction(outputs_[0], &small_mode_,
1642 gfx::Point(0, 0)).c_str(), 1631 gfx::Point(0, 0)).c_str(),
1643 kUngrab, NULL), 1632 kUngrab, NULL),
1644 log_->GetActionsAndClear()); 1633 log_->GetActionsAndClear());
1645 } 1634 }
1646 1635
1647 } // namespace test 1636 } // namespace test
1648 } // namespace ui 1637 } // namespace ui
OLDNEW
« no previous file with comments | « ui/display/chromeos/display_configurator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698