| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 size_t next_url_; | 106 size_t next_url_; |
| 107 base::MessageLoop message_loop_; | 107 base::MessageLoop message_loop_; |
| 108 scoped_refptr<net::TestURLRequestContextGetter> request_context_; | 108 scoped_refptr<net::TestURLRequestContextGetter> request_context_; |
| 109 net::TestURLFetcherFactory url_fetcher_factory_; | 109 net::TestURLFetcherFactory url_fetcher_factory_; |
| 110 SupervisedUserAsyncURLChecker checker_; | 110 SupervisedUserAsyncURLChecker checker_; |
| 111 }; | 111 }; |
| 112 | 112 |
| 113 TEST_F(SupervisedUserAsyncURLCheckerTest, Simple) { | 113 TEST_F(SupervisedUserAsyncURLCheckerTest, Simple) { |
| 114 { | 114 { |
| 115 GURL url(GetNewURL()); | 115 GURL url(GetNewURL()); |
| 116 EXPECT_FALSE(CheckURL(url)); | 116 ASSERT_FALSE(CheckURL(url)); |
| 117 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); | 117 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); |
| 118 SendValidResponse(false); | 118 SendValidResponse(false); |
| 119 } | 119 } |
| 120 { | 120 { |
| 121 GURL url(GetNewURL()); | 121 GURL url(GetNewURL()); |
| 122 EXPECT_FALSE(CheckURL(url)); | 122 ASSERT_FALSE(CheckURL(url)); |
| 123 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::BLOCK, false)); | 123 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::BLOCK, false)); |
| 124 SendValidResponse(true); | 124 SendValidResponse(true); |
| 125 } | 125 } |
| 126 { | 126 { |
| 127 GURL url(GetNewURL()); | 127 GURL url(GetNewURL()); |
| 128 EXPECT_FALSE(CheckURL(url)); | 128 ASSERT_FALSE(CheckURL(url)); |
| 129 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, true)); | 129 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, true)); |
| 130 SendFailedResponse(); | 130 SendFailedResponse(); |
| 131 } | 131 } |
| 132 } | 132 } |
| 133 | 133 |
| 134 TEST_F(SupervisedUserAsyncURLCheckerTest, Equivalence) { | 134 TEST_F(SupervisedUserAsyncURLCheckerTest, Equivalence) { |
| 135 // Leading "www." in the response should be ignored. | 135 // Leading "www." in the response should be ignored. |
| 136 { | 136 { |
| 137 GURL url("http://example.com"); | 137 GURL url("http://example.com"); |
| 138 GURL url_response("http://www.example.com"); | 138 GURL url_response("http://www.example.com"); |
| 139 EXPECT_FALSE(CheckURL(url)); | 139 ASSERT_FALSE(CheckURL(url)); |
| 140 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); | 140 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); |
| 141 SendValidResponse(false); | 141 SendValidResponse(false); |
| 142 } | 142 } |
| 143 // Scheme should be ignored. | 143 // Scheme should be ignored. |
| 144 { | 144 { |
| 145 GURL url("http://www.example2.com"); | 145 GURL url("http://www.example2.com"); |
| 146 GURL url_response("https://www.example2.com"); | 146 GURL url_response("https://www.example2.com"); |
| 147 EXPECT_FALSE(CheckURL(url)); | 147 ASSERT_FALSE(CheckURL(url)); |
| 148 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); | 148 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); |
| 149 SendValidResponse(false); | 149 SendValidResponse(false); |
| 150 } | 150 } |
| 151 // Both at the same time should work as well. | 151 // Both at the same time should work as well. |
| 152 { | 152 { |
| 153 GURL url("http://example3.com"); | 153 GURL url("http://example3.com"); |
| 154 GURL url_response("https://www.example3.com"); | 154 GURL url_response("https://www.example3.com"); |
| 155 EXPECT_FALSE(CheckURL(url)); | 155 ASSERT_FALSE(CheckURL(url)); |
| 156 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); | 156 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); |
| 157 SendValidResponse(false); | 157 SendValidResponse(false); |
| 158 } | 158 } |
| 159 } | 159 } |
| 160 | 160 |
| 161 TEST_F(SupervisedUserAsyncURLCheckerTest, Cache) { | 161 TEST_F(SupervisedUserAsyncURLCheckerTest, Cache) { |
| 162 // One more URL than fit in the cache. | 162 // One more URL than fit in the cache. |
| 163 ASSERT_EQ(2u, kCacheSize); | 163 ASSERT_EQ(2u, kCacheSize); |
| 164 GURL url1(GetNewURL()); | 164 GURL url1(GetNewURL()); |
| 165 GURL url2(GetNewURL()); | 165 GURL url2(GetNewURL()); |
| 166 GURL url3(GetNewURL()); | 166 GURL url3(GetNewURL()); |
| 167 | 167 |
| 168 // Populate the cache. | 168 // Populate the cache. |
| 169 EXPECT_FALSE(CheckURL(url1)); | 169 ASSERT_FALSE(CheckURL(url1)); |
| 170 EXPECT_CALL(*this, OnCheckDone(url1, SupervisedUserURLFilter::ALLOW, false)); | 170 EXPECT_CALL(*this, OnCheckDone(url1, SupervisedUserURLFilter::ALLOW, false)); |
| 171 SendValidResponse(false); | 171 SendValidResponse(false); |
| 172 EXPECT_FALSE(CheckURL(url2)); | 172 ASSERT_FALSE(CheckURL(url2)); |
| 173 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false)); | 173 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false)); |
| 174 SendValidResponse(false); | 174 SendValidResponse(false); |
| 175 | 175 |
| 176 // Now we should get results synchronously. | 176 // Now we should get results synchronously. |
| 177 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false)); | 177 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false)); |
| 178 EXPECT_TRUE(CheckURL(url2)); | 178 ASSERT_TRUE(CheckURL(url2)); |
| 179 EXPECT_CALL(*this, OnCheckDone(url1, SupervisedUserURLFilter::ALLOW, false)); | 179 EXPECT_CALL(*this, OnCheckDone(url1, SupervisedUserURLFilter::ALLOW, false)); |
| 180 EXPECT_TRUE(CheckURL(url1)); | 180 ASSERT_TRUE(CheckURL(url1)); |
| 181 | 181 |
| 182 // Now |url2| is the LRU and should be evicted on the next check. | 182 // Now |url2| is the LRU and should be evicted on the next check. |
| 183 EXPECT_FALSE(CheckURL(url3)); | 183 ASSERT_FALSE(CheckURL(url3)); |
| 184 EXPECT_CALL(*this, OnCheckDone(url3, SupervisedUserURLFilter::ALLOW, false)); | 184 EXPECT_CALL(*this, OnCheckDone(url3, SupervisedUserURLFilter::ALLOW, false)); |
| 185 SendValidResponse(false); | 185 SendValidResponse(false); |
| 186 | 186 |
| 187 EXPECT_FALSE(CheckURL(url2)); | 187 ASSERT_FALSE(CheckURL(url2)); |
| 188 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false)); | 188 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false)); |
| 189 SendValidResponse(false); | 189 SendValidResponse(false); |
| 190 } | 190 } |
| 191 | 191 |
| 192 TEST_F(SupervisedUserAsyncURLCheckerTest, CoalesceRequestsToSameURL) { | 192 TEST_F(SupervisedUserAsyncURLCheckerTest, CoalesceRequestsToSameURL) { |
| 193 GURL url(GetNewURL()); | 193 GURL url(GetNewURL()); |
| 194 // Start two checks for the same URL. | 194 // Start two checks for the same URL. |
| 195 EXPECT_FALSE(CheckURL(url)); | 195 ASSERT_FALSE(CheckURL(url)); |
| 196 EXPECT_FALSE(CheckURL(url)); | 196 ASSERT_FALSE(CheckURL(url)); |
| 197 // A single response should answer both checks. | 197 // A single response should answer both checks. |
| 198 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)) | 198 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)) |
| 199 .Times(2); | 199 .Times(2); |
| 200 SendValidResponse(false); | 200 SendValidResponse(false); |
| 201 } | 201 } |
| 202 |
| 203 TEST_F(SupervisedUserAsyncURLCheckerTest, CacheTimeout) { |
| 204 GURL url(GetNewURL()); |
| 205 |
| 206 checker_.SetCacheTimeoutForTesting(base::TimeDelta::FromSeconds(0)); |
| 207 |
| 208 ASSERT_FALSE(CheckURL(url)); |
| 209 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); |
| 210 SendValidResponse(false); |
| 211 |
| 212 // Since the cache timeout is zero, the cache entry should be invalidated |
| 213 // immediately. |
| 214 ASSERT_FALSE(CheckURL(url)); |
| 215 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::BLOCK, false)); |
| 216 SendValidResponse(true); |
| 217 } |
| OLD | NEW |