| 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 <time.h> | 5 #include <time.h> |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <sstream> | 8 #include <sstream> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 | 240 |
| 241 testing_master.Shutdown(); | 241 testing_master.Shutdown(); |
| 242 } | 242 } |
| 243 | 243 |
| 244 //------------------------------------------------------------------------------ | 244 //------------------------------------------------------------------------------ |
| 245 // Functions to help synthesize and test serializations of subresource referrer | 245 // Functions to help synthesize and test serializations of subresource referrer |
| 246 // lists. | 246 // lists. |
| 247 | 247 |
| 248 // Return a motivation_list if we can find one for the given motivating_host (or | 248 // Return a motivation_list if we can find one for the given motivating_host (or |
| 249 // NULL if a match is not found). | 249 // NULL if a match is not found). |
| 250 static ListValue* FindSerializationMotivation(const GURL& motivation, | 250 static const ListValue* FindSerializationMotivation( |
| 251 const ListValue& referral_list) { | 251 const GURL& motivation, |
| 252 CHECK_LT(0u, referral_list.GetSize()); // Room for version. | 252 const ListValue* referral_list) { |
| 253 CHECK_LT(0u, referral_list->GetSize()); // Room for version. |
| 253 int format_version = -1; | 254 int format_version = -1; |
| 254 CHECK(referral_list.GetInteger(0, &format_version)); | 255 CHECK(referral_list->GetInteger(0, &format_version)); |
| 255 CHECK_EQ(Predictor::kPredictorReferrerVersion, format_version); | 256 CHECK_EQ(Predictor::kPredictorReferrerVersion, format_version); |
| 256 ListValue* motivation_list(NULL); | 257 const ListValue* motivation_list(NULL); |
| 257 for (size_t i = 1; i < referral_list.GetSize(); ++i) { | 258 for (size_t i = 1; i < referral_list->GetSize(); ++i) { |
| 258 referral_list.GetList(i, &motivation_list); | 259 referral_list->GetList(i, &motivation_list); |
| 259 std::string existing_spec; | 260 std::string existing_spec; |
| 260 EXPECT_TRUE(motivation_list->GetString(0, &existing_spec)); | 261 EXPECT_TRUE(motivation_list->GetString(0, &existing_spec)); |
| 261 if (motivation == GURL(existing_spec)) | 262 if (motivation == GURL(existing_spec)) |
| 262 return motivation_list; | 263 return motivation_list; |
| 263 } | 264 } |
| 264 return NULL; | 265 return NULL; |
| 265 } | 266 } |
| 266 | 267 |
| 268 static ListValue* FindSerializationMotivation(const GURL& motivation, |
| 269 ListValue* referral_list) { |
| 270 return const_cast<ListValue*>(FindSerializationMotivation( |
| 271 motivation, static_cast<const ListValue*>(referral_list))); |
| 272 } |
| 273 |
| 267 // Create a new empty serialization list. | 274 // Create a new empty serialization list. |
| 268 static ListValue* NewEmptySerializationList() { | 275 static ListValue* NewEmptySerializationList() { |
| 269 base::ListValue* list = new base::ListValue; | 276 base::ListValue* list = new base::ListValue; |
| 270 list->Append( | 277 list->Append( |
| 271 new base::FundamentalValue(Predictor::kPredictorReferrerVersion)); | 278 new base::FundamentalValue(Predictor::kPredictorReferrerVersion)); |
| 272 return list; | 279 return list; |
| 273 } | 280 } |
| 274 | 281 |
| 275 // Add a motivating_url and a subresource_url to a serialized list, using | 282 // Add a motivating_url and a subresource_url to a serialized list, using |
| 276 // this given latency. This is a helper function for quickly building these | 283 // this given latency. This is a helper function for quickly building these |
| 277 // lists. | 284 // lists. |
| 278 static void AddToSerializedList(const GURL& motivation, | 285 static void AddToSerializedList(const GURL& motivation, |
| 279 const GURL& subresource, | 286 const GURL& subresource, |
| 280 double use_rate, | 287 double use_rate, |
| 281 ListValue* referral_list ) { | 288 ListValue* referral_list ) { |
| 282 // Find the motivation if it is already used. | 289 // Find the motivation if it is already used. |
| 283 ListValue* motivation_list = FindSerializationMotivation(motivation, | 290 ListValue* motivation_list = FindSerializationMotivation(motivation, |
| 284 *referral_list); | 291 referral_list); |
| 285 if (!motivation_list) { | 292 if (!motivation_list) { |
| 286 // This is the first mention of this motivation, so build a list. | 293 // This is the first mention of this motivation, so build a list. |
| 287 motivation_list = new ListValue; | 294 motivation_list = new ListValue; |
| 288 motivation_list->Append(new StringValue(motivation.spec())); | 295 motivation_list->Append(new StringValue(motivation.spec())); |
| 289 // Provide empty subresource list. | 296 // Provide empty subresource list. |
| 290 motivation_list->Append(new ListValue()); | 297 motivation_list->Append(new ListValue()); |
| 291 | 298 |
| 292 // ...and make it part of the serialized referral_list. | 299 // ...and make it part of the serialized referral_list. |
| 293 referral_list->Append(motivation_list); | 300 referral_list->Append(motivation_list); |
| 294 } | 301 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 308 static const int kLatencyNotFound = -1; | 315 static const int kLatencyNotFound = -1; |
| 309 | 316 |
| 310 // For a given motivation, and subresource, find what latency is currently | 317 // For a given motivation, and subresource, find what latency is currently |
| 311 // listed. This assume a well formed serialization, which has at most one such | 318 // listed. This assume a well formed serialization, which has at most one such |
| 312 // entry for any pair of names. If no such pair is found, then return false. | 319 // entry for any pair of names. If no such pair is found, then return false. |
| 313 // Data is written into use_rate arguments. | 320 // Data is written into use_rate arguments. |
| 314 static bool GetDataFromSerialization(const GURL& motivation, | 321 static bool GetDataFromSerialization(const GURL& motivation, |
| 315 const GURL& subresource, | 322 const GURL& subresource, |
| 316 const ListValue& referral_list, | 323 const ListValue& referral_list, |
| 317 double* use_rate) { | 324 double* use_rate) { |
| 318 ListValue* motivation_list = FindSerializationMotivation(motivation, | 325 const ListValue* motivation_list = |
| 319 referral_list); | 326 FindSerializationMotivation(motivation, &referral_list); |
| 320 if (!motivation_list) | 327 if (!motivation_list) |
| 321 return false; | 328 return false; |
| 322 ListValue* subresource_list; | 329 const ListValue* subresource_list; |
| 323 EXPECT_TRUE(motivation_list->GetList(1, &subresource_list)); | 330 EXPECT_TRUE(motivation_list->GetList(1, &subresource_list)); |
| 324 for (size_t i = 0; i < subresource_list->GetSize();) { | 331 for (size_t i = 0; i < subresource_list->GetSize();) { |
| 325 std::string url_spec; | 332 std::string url_spec; |
| 326 EXPECT_TRUE(subresource_list->GetString(i++, &url_spec)); | 333 EXPECT_TRUE(subresource_list->GetString(i++, &url_spec)); |
| 327 EXPECT_TRUE(subresource_list->GetDouble(i++, use_rate)); | 334 EXPECT_TRUE(subresource_list->GetDouble(i++, use_rate)); |
| 328 if (subresource == GURL(url_spec)) { | 335 if (subresource == GURL(url_spec)) { |
| 329 return true; | 336 return true; |
| 330 } | 337 } |
| 331 } | 338 } |
| 332 return false; | 339 return false; |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 668 EXPECT_EQ(2U, referral_list.GetSize()); | 675 EXPECT_EQ(2U, referral_list.GetSize()); |
| 669 | 676 |
| 670 predictor.DiscardAllResults(); | 677 predictor.DiscardAllResults(); |
| 671 predictor.SerializeReferrers(&referral_list); | 678 predictor.SerializeReferrers(&referral_list); |
| 672 EXPECT_EQ(1U, referral_list.GetSize()); | 679 EXPECT_EQ(1U, referral_list.GetSize()); |
| 673 | 680 |
| 674 predictor.Shutdown(); | 681 predictor.Shutdown(); |
| 675 } | 682 } |
| 676 | 683 |
| 677 } // namespace chrome_browser_net | 684 } // namespace chrome_browser_net |
| OLD | NEW |