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