| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/apply_content_protection_task.h" |
| 6 |
| 5 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <utility> |
| 6 | 9 |
| 7 #include "base/bind.h" | 10 #include "base/bind.h" |
| 8 #include "base/macros.h" | 11 #include "base/macros.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "ui/display/chromeos/apply_content_protection_task.h" | |
| 11 #include "ui/display/chromeos/display_layout_manager.h" | 13 #include "ui/display/chromeos/display_layout_manager.h" |
| 12 #include "ui/display/chromeos/test/action_logger_util.h" | 14 #include "ui/display/chromeos/test/action_logger_util.h" |
| 13 #include "ui/display/chromeos/test/test_display_layout_manager.h" | 15 #include "ui/display/chromeos/test/test_display_layout_manager.h" |
| 14 #include "ui/display/chromeos/test/test_display_snapshot.h" | 16 #include "ui/display/chromeos/test/test_display_snapshot.h" |
| 15 #include "ui/display/chromeos/test/test_native_display_delegate.h" | 17 #include "ui/display/chromeos/test/test_native_display_delegate.h" |
| 16 | 18 |
| 17 namespace ui { | 19 namespace ui { |
| 18 namespace test { | 20 namespace test { |
| 19 | 21 |
| 20 namespace { | 22 namespace { |
| 21 | 23 |
| 22 scoped_ptr<DisplaySnapshot> CreateDisplaySnapshot(int64_t id, | 24 scoped_ptr<DisplaySnapshot> CreateDisplaySnapshot(int64_t id, |
| 23 DisplayConnectionType type) { | 25 DisplayConnectionType type) { |
| 24 scoped_ptr<TestDisplaySnapshot> display(new TestDisplaySnapshot()); | 26 scoped_ptr<TestDisplaySnapshot> display(new TestDisplaySnapshot()); |
| 25 display->set_display_id(id); | 27 display->set_display_id(id); |
| 26 display->set_type(type); | 28 display->set_type(type); |
| 27 | 29 |
| 28 return display.Pass(); | 30 return std::move(display); |
| 29 } | 31 } |
| 30 | 32 |
| 31 } // namespace | 33 } // namespace |
| 32 | 34 |
| 33 class ApplyContentProtectionTaskTest : public testing::Test { | 35 class ApplyContentProtectionTaskTest : public testing::Test { |
| 34 public: | 36 public: |
| 35 enum Response { | 37 enum Response { |
| 36 ERROR, | 38 ERROR, |
| 37 SUCCESS, | 39 SUCCESS, |
| 38 NOT_CALLED, | 40 NOT_CALLED, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 50 TestNativeDisplayDelegate display_delegate_; | 52 TestNativeDisplayDelegate display_delegate_; |
| 51 | 53 |
| 52 private: | 54 private: |
| 53 DISALLOW_COPY_AND_ASSIGN(ApplyContentProtectionTaskTest); | 55 DISALLOW_COPY_AND_ASSIGN(ApplyContentProtectionTaskTest); |
| 54 }; | 56 }; |
| 55 | 57 |
| 56 TEST_F(ApplyContentProtectionTaskTest, ApplyWithNoHDCPCapableDisplay) { | 58 TEST_F(ApplyContentProtectionTaskTest, ApplyWithNoHDCPCapableDisplay) { |
| 57 ScopedVector<DisplaySnapshot> displays; | 59 ScopedVector<DisplaySnapshot> displays; |
| 58 displays.push_back( | 60 displays.push_back( |
| 59 CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_INTERNAL)); | 61 CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_INTERNAL)); |
| 60 TestDisplayLayoutManager layout_manager(displays.Pass(), | 62 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 61 MULTIPLE_DISPLAY_STATE_SINGLE); | 63 MULTIPLE_DISPLAY_STATE_SINGLE); |
| 62 | 64 |
| 63 DisplayConfigurator::ContentProtections request; | 65 DisplayConfigurator::ContentProtections request; |
| 64 request[1] = CONTENT_PROTECTION_METHOD_HDCP; | 66 request[1] = CONTENT_PROTECTION_METHOD_HDCP; |
| 65 ApplyContentProtectionTask task( | 67 ApplyContentProtectionTask task( |
| 66 &layout_manager, &display_delegate_, request, | 68 &layout_manager, &display_delegate_, request, |
| 67 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, | 69 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, |
| 68 base::Unretained(this))); | 70 base::Unretained(this))); |
| 69 task.Run(); | 71 task.Run(); |
| 70 | 72 |
| 71 EXPECT_EQ(SUCCESS, response_); | 73 EXPECT_EQ(SUCCESS, response_); |
| 72 EXPECT_EQ(kNoActions, log_.GetActionsAndClear()); | 74 EXPECT_EQ(kNoActions, log_.GetActionsAndClear()); |
| 73 } | 75 } |
| 74 | 76 |
| 75 TEST_F(ApplyContentProtectionTaskTest, ApplyWithHDMIDisplay) { | 77 TEST_F(ApplyContentProtectionTaskTest, ApplyWithHDMIDisplay) { |
| 76 ScopedVector<DisplaySnapshot> displays; | 78 ScopedVector<DisplaySnapshot> displays; |
| 77 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); | 79 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); |
| 78 TestDisplayLayoutManager layout_manager(displays.Pass(), | 80 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 79 MULTIPLE_DISPLAY_STATE_SINGLE); | 81 MULTIPLE_DISPLAY_STATE_SINGLE); |
| 80 | 82 |
| 81 DisplayConfigurator::ContentProtections request; | 83 DisplayConfigurator::ContentProtections request; |
| 82 request[1] = CONTENT_PROTECTION_METHOD_HDCP; | 84 request[1] = CONTENT_PROTECTION_METHOD_HDCP; |
| 83 ApplyContentProtectionTask task( | 85 ApplyContentProtectionTask task( |
| 84 &layout_manager, &display_delegate_, request, | 86 &layout_manager, &display_delegate_, request, |
| 85 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, | 87 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, |
| 86 base::Unretained(this))); | 88 base::Unretained(this))); |
| 87 task.Run(); | 89 task.Run(); |
| 88 | 90 |
| 89 EXPECT_EQ(SUCCESS, response_); | 91 EXPECT_EQ(SUCCESS, response_); |
| 90 EXPECT_EQ( | 92 EXPECT_EQ( |
| 91 JoinActions(GetSetHDCPStateAction(*layout_manager.GetDisplayStates()[0], | 93 JoinActions(GetSetHDCPStateAction(*layout_manager.GetDisplayStates()[0], |
| 92 HDCP_STATE_DESIRED).c_str(), | 94 HDCP_STATE_DESIRED).c_str(), |
| 93 NULL), | 95 NULL), |
| 94 log_.GetActionsAndClear()); | 96 log_.GetActionsAndClear()); |
| 95 } | 97 } |
| 96 | 98 |
| 97 TEST_F(ApplyContentProtectionTaskTest, ApplyWithUnknownDisplay) { | 99 TEST_F(ApplyContentProtectionTaskTest, ApplyWithUnknownDisplay) { |
| 98 ScopedVector<DisplaySnapshot> displays; | 100 ScopedVector<DisplaySnapshot> displays; |
| 99 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_UNKNOWN)); | 101 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_UNKNOWN)); |
| 100 TestDisplayLayoutManager layout_manager(displays.Pass(), | 102 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 101 MULTIPLE_DISPLAY_STATE_SINGLE); | 103 MULTIPLE_DISPLAY_STATE_SINGLE); |
| 102 | 104 |
| 103 DisplayConfigurator::ContentProtections request; | 105 DisplayConfigurator::ContentProtections request; |
| 104 request[1] = CONTENT_PROTECTION_METHOD_HDCP; | 106 request[1] = CONTENT_PROTECTION_METHOD_HDCP; |
| 105 ApplyContentProtectionTask task( | 107 ApplyContentProtectionTask task( |
| 106 &layout_manager, &display_delegate_, request, | 108 &layout_manager, &display_delegate_, request, |
| 107 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, | 109 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, |
| 108 base::Unretained(this))); | 110 base::Unretained(this))); |
| 109 task.Run(); | 111 task.Run(); |
| 110 | 112 |
| 111 EXPECT_EQ(ERROR, response_); | 113 EXPECT_EQ(ERROR, response_); |
| 112 EXPECT_EQ(kNoActions, log_.GetActionsAndClear()); | 114 EXPECT_EQ(kNoActions, log_.GetActionsAndClear()); |
| 113 } | 115 } |
| 114 | 116 |
| 115 TEST_F(ApplyContentProtectionTaskTest, FailGettingHDCPState) { | 117 TEST_F(ApplyContentProtectionTaskTest, FailGettingHDCPState) { |
| 116 ScopedVector<DisplaySnapshot> displays; | 118 ScopedVector<DisplaySnapshot> displays; |
| 117 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); | 119 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); |
| 118 TestDisplayLayoutManager layout_manager(displays.Pass(), | 120 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 119 MULTIPLE_DISPLAY_STATE_SINGLE); | 121 MULTIPLE_DISPLAY_STATE_SINGLE); |
| 120 display_delegate_.set_get_hdcp_state_expectation(false); | 122 display_delegate_.set_get_hdcp_state_expectation(false); |
| 121 | 123 |
| 122 DisplayConfigurator::ContentProtections request; | 124 DisplayConfigurator::ContentProtections request; |
| 123 request[1] = CONTENT_PROTECTION_METHOD_HDCP; | 125 request[1] = CONTENT_PROTECTION_METHOD_HDCP; |
| 124 ApplyContentProtectionTask task( | 126 ApplyContentProtectionTask task( |
| 125 &layout_manager, &display_delegate_, request, | 127 &layout_manager, &display_delegate_, request, |
| 126 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, | 128 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, |
| 127 base::Unretained(this))); | 129 base::Unretained(this))); |
| 128 task.Run(); | 130 task.Run(); |
| 129 | 131 |
| 130 EXPECT_EQ(ERROR, response_); | 132 EXPECT_EQ(ERROR, response_); |
| 131 EXPECT_EQ(kNoActions, log_.GetActionsAndClear()); | 133 EXPECT_EQ(kNoActions, log_.GetActionsAndClear()); |
| 132 } | 134 } |
| 133 | 135 |
| 134 TEST_F(ApplyContentProtectionTaskTest, FailSettingHDCPState) { | 136 TEST_F(ApplyContentProtectionTaskTest, FailSettingHDCPState) { |
| 135 ScopedVector<DisplaySnapshot> displays; | 137 ScopedVector<DisplaySnapshot> displays; |
| 136 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); | 138 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); |
| 137 TestDisplayLayoutManager layout_manager(displays.Pass(), | 139 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 138 MULTIPLE_DISPLAY_STATE_SINGLE); | 140 MULTIPLE_DISPLAY_STATE_SINGLE); |
| 139 display_delegate_.set_set_hdcp_state_expectation(false); | 141 display_delegate_.set_set_hdcp_state_expectation(false); |
| 140 | 142 |
| 141 DisplayConfigurator::ContentProtections request; | 143 DisplayConfigurator::ContentProtections request; |
| 142 request[1] = CONTENT_PROTECTION_METHOD_HDCP; | 144 request[1] = CONTENT_PROTECTION_METHOD_HDCP; |
| 143 ApplyContentProtectionTask task( | 145 ApplyContentProtectionTask task( |
| 144 &layout_manager, &display_delegate_, request, | 146 &layout_manager, &display_delegate_, request, |
| 145 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, | 147 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, |
| 146 base::Unretained(this))); | 148 base::Unretained(this))); |
| 147 task.Run(); | 149 task.Run(); |
| 148 | 150 |
| 149 EXPECT_EQ(ERROR, response_); | 151 EXPECT_EQ(ERROR, response_); |
| 150 EXPECT_EQ( | 152 EXPECT_EQ( |
| 151 JoinActions(GetSetHDCPStateAction(*layout_manager.GetDisplayStates()[0], | 153 JoinActions(GetSetHDCPStateAction(*layout_manager.GetDisplayStates()[0], |
| 152 HDCP_STATE_DESIRED).c_str(), | 154 HDCP_STATE_DESIRED).c_str(), |
| 153 NULL), | 155 NULL), |
| 154 log_.GetActionsAndClear()); | 156 log_.GetActionsAndClear()); |
| 155 } | 157 } |
| 156 | 158 |
| 157 TEST_F(ApplyContentProtectionTaskTest, ApplyNoopProtection) { | 159 TEST_F(ApplyContentProtectionTaskTest, ApplyNoopProtection) { |
| 158 ScopedVector<DisplaySnapshot> displays; | 160 ScopedVector<DisplaySnapshot> displays; |
| 159 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); | 161 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); |
| 160 TestDisplayLayoutManager layout_manager(displays.Pass(), | 162 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 161 MULTIPLE_DISPLAY_STATE_SINGLE); | 163 MULTIPLE_DISPLAY_STATE_SINGLE); |
| 162 display_delegate_.set_hdcp_state(HDCP_STATE_UNDESIRED); | 164 display_delegate_.set_hdcp_state(HDCP_STATE_UNDESIRED); |
| 163 | 165 |
| 164 DisplayConfigurator::ContentProtections request; | 166 DisplayConfigurator::ContentProtections request; |
| 165 request[1] = CONTENT_PROTECTION_METHOD_NONE; | 167 request[1] = CONTENT_PROTECTION_METHOD_NONE; |
| 166 ApplyContentProtectionTask task( | 168 ApplyContentProtectionTask task( |
| 167 &layout_manager, &display_delegate_, request, | 169 &layout_manager, &display_delegate_, request, |
| 168 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, | 170 base::Bind(&ApplyContentProtectionTaskTest::ResponseCallback, |
| 169 base::Unretained(this))); | 171 base::Unretained(this))); |
| 170 task.Run(); | 172 task.Run(); |
| 171 | 173 |
| 172 EXPECT_EQ(SUCCESS, response_); | 174 EXPECT_EQ(SUCCESS, response_); |
| 173 EXPECT_EQ(kNoActions, log_.GetActionsAndClear()); | 175 EXPECT_EQ(kNoActions, log_.GetActionsAndClear()); |
| 174 } | 176 } |
| 175 | 177 |
| 176 } // namespace test | 178 } // namespace test |
| 177 } // namespace ui | 179 } // namespace ui |
| OLD | NEW |