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 |