| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "extensions/browser/api/web_request/web_request_time_tracker.h" | 5 #include "extensions/browser/api/web_request/web_request_time_tracker.h" |
| 6 | 6 |
| 7 #include <stddef.h> |
| 8 #include <stdint.h> |
| 9 |
| 7 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 9 | 12 |
| 10 namespace { | 13 namespace { |
| 11 const base::TimeDelta kRequestDelta = base::TimeDelta::FromMilliseconds(100); | 14 const base::TimeDelta kRequestDelta = base::TimeDelta::FromMilliseconds(100); |
| 12 const base::TimeDelta kTinyDelay = base::TimeDelta::FromMilliseconds(1); | 15 const base::TimeDelta kTinyDelay = base::TimeDelta::FromMilliseconds(1); |
| 13 const base::TimeDelta kModerateDelay = base::TimeDelta::FromMilliseconds(25); | 16 const base::TimeDelta kModerateDelay = base::TimeDelta::FromMilliseconds(25); |
| 14 const base::TimeDelta kExcessiveDelay = base::TimeDelta::FromMilliseconds(75); | 17 const base::TimeDelta kExcessiveDelay = base::TimeDelta::FromMilliseconds(75); |
| 15 | 18 |
| 16 class ExtensionWebRequestTimeTrackerDelegateMock | 19 class ExtensionWebRequestTimeTrackerDelegateMock |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 tracker.LogRequestEndTime(2, start + kRequestDelta); | 85 tracker.LogRequestEndTime(2, start + kRequestDelta); |
| 83 tracker.LogRequestEndTime(3, start + kRequestDelta); | 86 tracker.LogRequestEndTime(3, start + kRequestDelta); |
| 84 EXPECT_EQ(3u, tracker.request_time_logs_.size()); | 87 EXPECT_EQ(3u, tracker.request_time_logs_.size()); |
| 85 EXPECT_EQ(1u, tracker.moderate_delays_.size()); | 88 EXPECT_EQ(1u, tracker.moderate_delays_.size()); |
| 86 EXPECT_EQ(1u, tracker.moderate_delays_.count(2)); | 89 EXPECT_EQ(1u, tracker.moderate_delays_.count(2)); |
| 87 EXPECT_EQ(1u, tracker.excessive_delays_.size()); | 90 EXPECT_EQ(1u, tracker.excessive_delays_.size()); |
| 88 EXPECT_EQ(1u, tracker.excessive_delays_.count(3)); | 91 EXPECT_EQ(1u, tracker.excessive_delays_.count(3)); |
| 89 | 92 |
| 90 // Now issue a bunch more requests and ensure that the old delays are | 93 // Now issue a bunch more requests and ensure that the old delays are |
| 91 // forgotten. | 94 // forgotten. |
| 92 for (int64 i = 4; i < 500; ++i) { | 95 for (int64_t i = 4; i < 500; ++i) { |
| 93 tracker.LogRequestStartTime(i, start, GURL(), profile); | 96 tracker.LogRequestStartTime(i, start, GURL(), profile); |
| 94 tracker.LogRequestEndTime(i, start + kRequestDelta); | 97 tracker.LogRequestEndTime(i, start + kRequestDelta); |
| 95 } | 98 } |
| 96 EXPECT_EQ(0u, tracker.moderate_delays_.size()); | 99 EXPECT_EQ(0u, tracker.moderate_delays_.size()); |
| 97 EXPECT_EQ(0u, tracker.excessive_delays_.size()); | 100 EXPECT_EQ(0u, tracker.excessive_delays_.size()); |
| 98 } | 101 } |
| 99 | 102 |
| 100 TEST(ExtensionWebRequestTimeTrackerTest, Delegate) { | 103 TEST(ExtensionWebRequestTimeTrackerTest, Delegate) { |
| 101 using testing::Mock; | 104 using testing::Mock; |
| 102 | 105 |
| 103 ExtensionWebRequestTimeTrackerDelegateMock* delegate( | 106 ExtensionWebRequestTimeTrackerDelegateMock* delegate( |
| 104 new ExtensionWebRequestTimeTrackerDelegateMock); | 107 new ExtensionWebRequestTimeTrackerDelegateMock); |
| 105 ExtensionWebRequestTimeTracker tracker; | 108 ExtensionWebRequestTimeTracker tracker; |
| 106 tracker.SetDelegate(delegate); | 109 tracker.SetDelegate(delegate); |
| 107 base::Time start; | 110 base::Time start; |
| 108 std::string extension1_id("1"); | 111 std::string extension1_id("1"); |
| 109 void* profile = NULL; | 112 void* profile = NULL; |
| 110 // Set of all extensions that blocked network requests. | 113 // Set of all extensions that blocked network requests. |
| 111 std::set<std::string> extensions; | 114 std::set<std::string> extensions; |
| 112 extensions.insert(extension1_id); | 115 extensions.insert(extension1_id); |
| 113 | 116 |
| 114 const int num_moderate_delays = 51; | 117 const int num_moderate_delays = 51; |
| 115 const int num_excessive_delays = 11; | 118 const int num_excessive_delays = 11; |
| 116 int request_nr = 0; | 119 int request_nr = 0; |
| 117 | 120 |
| 118 // Check that (only) the last moderate delay triggers the delegate callback. | 121 // Check that (only) the last moderate delay triggers the delegate callback. |
| 119 for (int64 i = 0; i < num_moderate_delays; ++i) { | 122 for (int64_t i = 0; i < num_moderate_delays; ++i) { |
| 120 request_nr++; | 123 request_nr++; |
| 121 if (i == num_moderate_delays-1) { | 124 if (i == num_moderate_delays-1) { |
| 122 EXPECT_CALL(*delegate, | 125 EXPECT_CALL(*delegate, |
| 123 NotifyModerateDelays(profile , i+1, request_nr, extensions)); | 126 NotifyModerateDelays(profile , i+1, request_nr, extensions)); |
| 124 } | 127 } |
| 125 tracker.LogRequestStartTime(request_nr, start, GURL(), profile); | 128 tracker.LogRequestStartTime(request_nr, start, GURL(), profile); |
| 126 tracker.IncrementExtensionBlockTime(extension1_id, request_nr, | 129 tracker.IncrementExtensionBlockTime(extension1_id, request_nr, |
| 127 kModerateDelay); | 130 kModerateDelay); |
| 128 tracker.IncrementTotalBlockTime(request_nr, kModerateDelay); | 131 tracker.IncrementTotalBlockTime(request_nr, kModerateDelay); |
| 129 tracker.LogRequestEndTime(request_nr, start + kRequestDelta); | 132 tracker.LogRequestEndTime(request_nr, start + kRequestDelta); |
| 130 Mock::VerifyAndClearExpectations(delegate); | 133 Mock::VerifyAndClearExpectations(delegate); |
| 131 } | 134 } |
| 132 | 135 |
| 133 // Check that (only) the last excessive delay triggers the delegate callback. | 136 // Check that (only) the last excessive delay triggers the delegate callback. |
| 134 for (int64 i = 0; i < num_excessive_delays; ++i) { | 137 for (int64_t i = 0; i < num_excessive_delays; ++i) { |
| 135 request_nr++; | 138 request_nr++; |
| 136 if (i == num_excessive_delays-1) { | 139 if (i == num_excessive_delays-1) { |
| 137 EXPECT_CALL(*delegate, | 140 EXPECT_CALL(*delegate, |
| 138 NotifyExcessiveDelays(profile, i+1, request_nr, extensions)); | 141 NotifyExcessiveDelays(profile, i+1, request_nr, extensions)); |
| 139 } | 142 } |
| 140 tracker.LogRequestStartTime(request_nr, start, GURL(), profile); | 143 tracker.LogRequestStartTime(request_nr, start, GURL(), profile); |
| 141 tracker.IncrementExtensionBlockTime(extension1_id, request_nr, | 144 tracker.IncrementExtensionBlockTime(extension1_id, request_nr, |
| 142 kExcessiveDelay); | 145 kExcessiveDelay); |
| 143 tracker.IncrementTotalBlockTime(request_nr, kExcessiveDelay); | 146 tracker.IncrementTotalBlockTime(request_nr, kExcessiveDelay); |
| 144 tracker.LogRequestEndTime(request_nr, start + kRequestDelta); | 147 tracker.LogRequestEndTime(request_nr, start + kRequestDelta); |
| 145 Mock::VerifyAndClearExpectations(delegate); | 148 Mock::VerifyAndClearExpectations(delegate); |
| 146 } | 149 } |
| 147 } | 150 } |
| OLD | NEW |