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