| 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/query_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/display_layout_manager.h" | 13 #include "ui/display/chromeos/display_layout_manager.h" |
| 11 #include "ui/display/chromeos/query_content_protection_task.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 QueryContentProtectionTaskTest : public testing::Test { | 35 class QueryContentProtectionTaskTest : public testing::Test { |
| 34 public: | 36 public: |
| 35 QueryContentProtectionTaskTest() | 37 QueryContentProtectionTaskTest() |
| 36 : display_delegate_(&log_), has_response_(false) {} | 38 : display_delegate_(&log_), has_response_(false) {} |
| 37 ~QueryContentProtectionTaskTest() override {} | 39 ~QueryContentProtectionTaskTest() override {} |
| 38 | 40 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 49 QueryContentProtectionTask::Response response_; | 51 QueryContentProtectionTask::Response response_; |
| 50 | 52 |
| 51 private: | 53 private: |
| 52 DISALLOW_COPY_AND_ASSIGN(QueryContentProtectionTaskTest); | 54 DISALLOW_COPY_AND_ASSIGN(QueryContentProtectionTaskTest); |
| 53 }; | 55 }; |
| 54 | 56 |
| 55 TEST_F(QueryContentProtectionTaskTest, QueryWithNoHDCPCapableDisplay) { | 57 TEST_F(QueryContentProtectionTaskTest, QueryWithNoHDCPCapableDisplay) { |
| 56 ScopedVector<DisplaySnapshot> displays; | 58 ScopedVector<DisplaySnapshot> displays; |
| 57 displays.push_back( | 59 displays.push_back( |
| 58 CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_INTERNAL)); | 60 CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_INTERNAL)); |
| 59 TestDisplayLayoutManager layout_manager(displays.Pass(), | 61 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 60 MULTIPLE_DISPLAY_STATE_SINGLE); | 62 MULTIPLE_DISPLAY_STATE_SINGLE); |
| 61 | 63 |
| 62 QueryContentProtectionTask task( | 64 QueryContentProtectionTask task( |
| 63 &layout_manager, &display_delegate_, 1, | 65 &layout_manager, &display_delegate_, 1, |
| 64 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, | 66 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, |
| 65 base::Unretained(this))); | 67 base::Unretained(this))); |
| 66 task.Run(); | 68 task.Run(); |
| 67 | 69 |
| 68 EXPECT_TRUE(has_response_); | 70 EXPECT_TRUE(has_response_); |
| 69 EXPECT_TRUE(response_.success); | 71 EXPECT_TRUE(response_.success); |
| 70 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_INTERNAL, response_.link_mask); | 72 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_INTERNAL, response_.link_mask); |
| 71 EXPECT_EQ(0u, response_.enabled); | 73 EXPECT_EQ(0u, response_.enabled); |
| 72 EXPECT_EQ(0u, response_.unfulfilled); | 74 EXPECT_EQ(0u, response_.unfulfilled); |
| 73 } | 75 } |
| 74 | 76 |
| 75 TEST_F(QueryContentProtectionTaskTest, QueryWithUnknownDisplay) { | 77 TEST_F(QueryContentProtectionTaskTest, QueryWithUnknownDisplay) { |
| 76 ScopedVector<DisplaySnapshot> displays; | 78 ScopedVector<DisplaySnapshot> displays; |
| 77 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_UNKNOWN)); | 79 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_UNKNOWN)); |
| 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 QueryContentProtectionTask task( | 83 QueryContentProtectionTask task( |
| 82 &layout_manager, &display_delegate_, 1, | 84 &layout_manager, &display_delegate_, 1, |
| 83 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, | 85 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, |
| 84 base::Unretained(this))); | 86 base::Unretained(this))); |
| 85 task.Run(); | 87 task.Run(); |
| 86 | 88 |
| 87 EXPECT_TRUE(has_response_); | 89 EXPECT_TRUE(has_response_); |
| 88 EXPECT_FALSE(response_.success); | 90 EXPECT_FALSE(response_.success); |
| 89 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_UNKNOWN, response_.link_mask); | 91 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_UNKNOWN, response_.link_mask); |
| 90 EXPECT_EQ(0u, response_.enabled); | 92 EXPECT_EQ(0u, response_.enabled); |
| 91 EXPECT_EQ(0u, response_.unfulfilled); | 93 EXPECT_EQ(0u, response_.unfulfilled); |
| 92 } | 94 } |
| 93 | 95 |
| 94 TEST_F(QueryContentProtectionTaskTest, FailQueryWithHDMIDisplay) { | 96 TEST_F(QueryContentProtectionTaskTest, FailQueryWithHDMIDisplay) { |
| 95 ScopedVector<DisplaySnapshot> displays; | 97 ScopedVector<DisplaySnapshot> displays; |
| 96 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); | 98 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); |
| 97 TestDisplayLayoutManager layout_manager(displays.Pass(), | 99 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 98 MULTIPLE_DISPLAY_STATE_SINGLE); | 100 MULTIPLE_DISPLAY_STATE_SINGLE); |
| 99 display_delegate_.set_get_hdcp_state_expectation(false); | 101 display_delegate_.set_get_hdcp_state_expectation(false); |
| 100 | 102 |
| 101 QueryContentProtectionTask task( | 103 QueryContentProtectionTask task( |
| 102 &layout_manager, &display_delegate_, 1, | 104 &layout_manager, &display_delegate_, 1, |
| 103 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, | 105 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, |
| 104 base::Unretained(this))); | 106 base::Unretained(this))); |
| 105 task.Run(); | 107 task.Run(); |
| 106 | 108 |
| 107 EXPECT_TRUE(has_response_); | 109 EXPECT_TRUE(has_response_); |
| 108 EXPECT_FALSE(response_.success); | 110 EXPECT_FALSE(response_.success); |
| 109 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_HDMI, response_.link_mask); | 111 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_HDMI, response_.link_mask); |
| 110 } | 112 } |
| 111 | 113 |
| 112 TEST_F(QueryContentProtectionTaskTest, QueryWithHDMIDisplayAndUnfulfilled) { | 114 TEST_F(QueryContentProtectionTaskTest, QueryWithHDMIDisplayAndUnfulfilled) { |
| 113 ScopedVector<DisplaySnapshot> displays; | 115 ScopedVector<DisplaySnapshot> displays; |
| 114 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); | 116 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); |
| 115 TestDisplayLayoutManager layout_manager(displays.Pass(), | 117 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 116 MULTIPLE_DISPLAY_STATE_SINGLE); | 118 MULTIPLE_DISPLAY_STATE_SINGLE); |
| 117 | 119 |
| 118 QueryContentProtectionTask task( | 120 QueryContentProtectionTask task( |
| 119 &layout_manager, &display_delegate_, 1, | 121 &layout_manager, &display_delegate_, 1, |
| 120 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, | 122 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, |
| 121 base::Unretained(this))); | 123 base::Unretained(this))); |
| 122 task.Run(); | 124 task.Run(); |
| 123 | 125 |
| 124 EXPECT_TRUE(has_response_); | 126 EXPECT_TRUE(has_response_); |
| 125 EXPECT_TRUE(response_.success); | 127 EXPECT_TRUE(response_.success); |
| 126 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_HDMI, response_.link_mask); | 128 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_HDMI, response_.link_mask); |
| 127 EXPECT_EQ(0u, response_.enabled); | 129 EXPECT_EQ(0u, response_.enabled); |
| 128 EXPECT_EQ(CONTENT_PROTECTION_METHOD_HDCP, response_.unfulfilled); | 130 EXPECT_EQ(CONTENT_PROTECTION_METHOD_HDCP, response_.unfulfilled); |
| 129 } | 131 } |
| 130 | 132 |
| 131 TEST_F(QueryContentProtectionTaskTest, QueryWithHDMIDisplayAndFulfilled) { | 133 TEST_F(QueryContentProtectionTaskTest, QueryWithHDMIDisplayAndFulfilled) { |
| 132 ScopedVector<DisplaySnapshot> displays; | 134 ScopedVector<DisplaySnapshot> displays; |
| 133 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); | 135 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); |
| 134 TestDisplayLayoutManager layout_manager(displays.Pass(), | 136 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 135 MULTIPLE_DISPLAY_STATE_SINGLE); | 137 MULTIPLE_DISPLAY_STATE_SINGLE); |
| 136 display_delegate_.set_hdcp_state(HDCP_STATE_ENABLED); | 138 display_delegate_.set_hdcp_state(HDCP_STATE_ENABLED); |
| 137 | 139 |
| 138 QueryContentProtectionTask task( | 140 QueryContentProtectionTask task( |
| 139 &layout_manager, &display_delegate_, 1, | 141 &layout_manager, &display_delegate_, 1, |
| 140 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, | 142 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, |
| 141 base::Unretained(this))); | 143 base::Unretained(this))); |
| 142 task.Run(); | 144 task.Run(); |
| 143 | 145 |
| 144 EXPECT_TRUE(has_response_); | 146 EXPECT_TRUE(has_response_); |
| 145 EXPECT_TRUE(response_.success); | 147 EXPECT_TRUE(response_.success); |
| 146 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_HDMI, response_.link_mask); | 148 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_HDMI, response_.link_mask); |
| 147 EXPECT_EQ(CONTENT_PROTECTION_METHOD_HDCP, response_.enabled); | 149 EXPECT_EQ(CONTENT_PROTECTION_METHOD_HDCP, response_.enabled); |
| 148 EXPECT_EQ(0u, response_.unfulfilled); | 150 EXPECT_EQ(0u, response_.unfulfilled); |
| 149 } | 151 } |
| 150 | 152 |
| 151 TEST_F(QueryContentProtectionTaskTest, QueryWith2HDCPDisplays) { | 153 TEST_F(QueryContentProtectionTaskTest, QueryWith2HDCPDisplays) { |
| 152 ScopedVector<DisplaySnapshot> displays; | 154 ScopedVector<DisplaySnapshot> displays; |
| 153 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); | 155 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); |
| 154 displays.push_back(CreateDisplaySnapshot(2, DISPLAY_CONNECTION_TYPE_DVI)); | 156 displays.push_back(CreateDisplaySnapshot(2, DISPLAY_CONNECTION_TYPE_DVI)); |
| 155 TestDisplayLayoutManager layout_manager(displays.Pass(), | 157 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 156 MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED); | 158 MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED); |
| 157 | 159 |
| 158 QueryContentProtectionTask task( | 160 QueryContentProtectionTask task( |
| 159 &layout_manager, &display_delegate_, 1, | 161 &layout_manager, &display_delegate_, 1, |
| 160 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, | 162 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, |
| 161 base::Unretained(this))); | 163 base::Unretained(this))); |
| 162 task.Run(); | 164 task.Run(); |
| 163 | 165 |
| 164 EXPECT_TRUE(has_response_); | 166 EXPECT_TRUE(has_response_); |
| 165 EXPECT_TRUE(response_.success); | 167 EXPECT_TRUE(response_.success); |
| 166 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_HDMI, response_.link_mask); | 168 EXPECT_EQ(DISPLAY_CONNECTION_TYPE_HDMI, response_.link_mask); |
| 167 EXPECT_EQ(0u, response_.enabled); | 169 EXPECT_EQ(0u, response_.enabled); |
| 168 EXPECT_EQ(CONTENT_PROTECTION_METHOD_HDCP, response_.unfulfilled); | 170 EXPECT_EQ(CONTENT_PROTECTION_METHOD_HDCP, response_.unfulfilled); |
| 169 } | 171 } |
| 170 | 172 |
| 171 TEST_F(QueryContentProtectionTaskTest, QueryWithMirrorHDCPDisplays) { | 173 TEST_F(QueryContentProtectionTaskTest, QueryWithMirrorHDCPDisplays) { |
| 172 ScopedVector<DisplaySnapshot> displays; | 174 ScopedVector<DisplaySnapshot> displays; |
| 173 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); | 175 displays.push_back(CreateDisplaySnapshot(1, DISPLAY_CONNECTION_TYPE_HDMI)); |
| 174 displays.push_back(CreateDisplaySnapshot(2, DISPLAY_CONNECTION_TYPE_DVI)); | 176 displays.push_back(CreateDisplaySnapshot(2, DISPLAY_CONNECTION_TYPE_DVI)); |
| 175 TestDisplayLayoutManager layout_manager(displays.Pass(), | 177 TestDisplayLayoutManager layout_manager(std::move(displays), |
| 176 MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); | 178 MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); |
| 177 | 179 |
| 178 QueryContentProtectionTask task( | 180 QueryContentProtectionTask task( |
| 179 &layout_manager, &display_delegate_, 1, | 181 &layout_manager, &display_delegate_, 1, |
| 180 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, | 182 base::Bind(&QueryContentProtectionTaskTest::ResponseCallback, |
| 181 base::Unretained(this))); | 183 base::Unretained(this))); |
| 182 task.Run(); | 184 task.Run(); |
| 183 | 185 |
| 184 EXPECT_TRUE(has_response_); | 186 EXPECT_TRUE(has_response_); |
| 185 EXPECT_TRUE(response_.success); | 187 EXPECT_TRUE(response_.success); |
| 186 EXPECT_EQ(static_cast<uint32_t>(DISPLAY_CONNECTION_TYPE_HDMI | | 188 EXPECT_EQ(static_cast<uint32_t>(DISPLAY_CONNECTION_TYPE_HDMI | |
| 187 DISPLAY_CONNECTION_TYPE_DVI), | 189 DISPLAY_CONNECTION_TYPE_DVI), |
| 188 response_.link_mask); | 190 response_.link_mask); |
| 189 EXPECT_EQ(0u, response_.enabled); | 191 EXPECT_EQ(0u, response_.enabled); |
| 190 EXPECT_EQ(CONTENT_PROTECTION_METHOD_HDCP, response_.unfulfilled); | 192 EXPECT_EQ(CONTENT_PROTECTION_METHOD_HDCP, response_.unfulfilled); |
| 191 } | 193 } |
| 192 | 194 |
| 193 } // namespace test | 195 } // namespace test |
| 194 } // namespace ui | 196 } // namespace ui |
| OLD | NEW |