OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 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 "base/values.h" |
| 6 #include "chrome/test/chromedriver/chrome/network_conditions.h" |
| 7 #include "chrome/test/chromedriver/chrome/network_conditions_override_manager.h" |
| 8 #include "chrome/test/chromedriver/chrome/recorder_devtools_client.h" |
| 9 #include "chrome/test/chromedriver/chrome/status.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" |
| 11 |
| 12 namespace { |
| 13 |
| 14 void AssertNetworkConditionsCommand( |
| 15 const Command& command, |
| 16 const NetworkConditions& network_conditions) { |
| 17 ASSERT_EQ("Network.emulateNetworkConditions", command.method); |
| 18 bool offline; |
| 19 double latency, download_throughput, upload_throughput; |
| 20 ASSERT_TRUE(command.params.GetBoolean("offline", &offline)); |
| 21 ASSERT_TRUE(command.params.GetDouble("latency", &latency)); |
| 22 ASSERT_TRUE(command.params.GetDouble("downloadThroughput", |
| 23 &download_throughput)); |
| 24 ASSERT_TRUE(command.params.GetDouble("uploadThroughput", |
| 25 &upload_throughput)); |
| 26 ASSERT_EQ(network_conditions.offline, offline); |
| 27 ASSERT_EQ(network_conditions.latency, latency); |
| 28 ASSERT_EQ(network_conditions.download_throughput, download_throughput); |
| 29 ASSERT_EQ(network_conditions.upload_throughput, upload_throughput); |
| 30 } |
| 31 |
| 32 } // namespace |
| 33 |
| 34 TEST(NetworkConditionsOverrideManager, OverrideSendsCommand) { |
| 35 RecorderDevToolsClient client; |
| 36 NetworkConditionsOverrideManager manager(&client); |
| 37 NetworkConditions network_conditions = {false, 100, 750*1024, 750*1024}; |
| 38 manager.OverrideNetworkConditions(network_conditions); |
| 39 ASSERT_EQ(3u, client.commands_.size()); |
| 40 ASSERT_NO_FATAL_FAILURE( |
| 41 AssertNetworkConditionsCommand(client.commands_[2], network_conditions)); |
| 42 |
| 43 network_conditions.latency = 200; |
| 44 manager.OverrideNetworkConditions(network_conditions); |
| 45 ASSERT_EQ(6u, client.commands_.size()); |
| 46 ASSERT_NO_FATAL_FAILURE( |
| 47 AssertNetworkConditionsCommand(client.commands_[5], network_conditions)); |
| 48 } |
| 49 |
| 50 TEST(NetworkConditionsOverrideManager, SendsCommandOnConnect) { |
| 51 RecorderDevToolsClient client; |
| 52 NetworkConditionsOverrideManager manager(&client); |
| 53 ASSERT_EQ(0u, client.commands_.size()); |
| 54 ASSERT_EQ(kOk, manager.OnConnected(&client).code()); |
| 55 |
| 56 NetworkConditions network_conditions = {false, 100, 750*1024, 750*1024}; |
| 57 manager.OverrideNetworkConditions(network_conditions); |
| 58 ASSERT_EQ(3u, client.commands_.size()); |
| 59 ASSERT_EQ(kOk, manager.OnConnected(&client).code()); |
| 60 ASSERT_EQ(6u, client.commands_.size()); |
| 61 ASSERT_NO_FATAL_FAILURE( |
| 62 AssertNetworkConditionsCommand(client.commands_[5], network_conditions)); |
| 63 } |
| 64 |
| 65 TEST(NetworkConditionsOverrideManager, SendsCommandOnNavigation) { |
| 66 RecorderDevToolsClient client; |
| 67 NetworkConditionsOverrideManager manager(&client); |
| 68 base::DictionaryValue main_frame_params; |
| 69 ASSERT_EQ(kOk, |
| 70 manager.OnEvent(&client, "Page.frameNavigated", main_frame_params) |
| 71 .code()); |
| 72 ASSERT_EQ(0u, client.commands_.size()); |
| 73 |
| 74 NetworkConditions network_conditions = {false, 100, 750*1024, 750*1024}; |
| 75 manager.OverrideNetworkConditions(network_conditions); |
| 76 ASSERT_EQ(3u, client.commands_.size()); |
| 77 ASSERT_EQ(kOk, |
| 78 manager.OnEvent(&client, "Page.frameNavigated", main_frame_params) |
| 79 .code()); |
| 80 ASSERT_EQ(6u, client.commands_.size()); |
| 81 ASSERT_NO_FATAL_FAILURE( |
| 82 AssertNetworkConditionsCommand(client.commands_[2], network_conditions)); |
| 83 |
| 84 base::DictionaryValue sub_frame_params; |
| 85 sub_frame_params.SetString("frame.parentId", "id"); |
| 86 ASSERT_EQ( |
| 87 kOk, |
| 88 manager.OnEvent(&client, "Page.frameNavigated", sub_frame_params).code()); |
| 89 ASSERT_EQ(6u, client.commands_.size()); |
| 90 ASSERT_NO_FATAL_FAILURE( |
| 91 AssertNetworkConditionsCommand(client.commands_[5], network_conditions)); |
| 92 } |
OLD | NEW |