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 "components/search_engines/util.h" | 5 #include "components/search_engines/util.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
11 #include <map> | 11 #include <map> |
12 #include <set> | 12 #include <set> |
13 #include <string> | 13 #include <string> |
14 #include <vector> | 14 #include <vector> |
15 | 15 |
16 #include "base/logging.h" | 16 #include "base/logging.h" |
17 #include "base/memory/ptr_util.h" | 17 #include "base/memory/ptr_util.h" |
| 18 #include "base/strings/string_number_conversions.h" |
18 #include "base/time/time.h" | 19 #include "base/time/time.h" |
19 #include "components/prefs/pref_service.h" | 20 #include "components/prefs/pref_service.h" |
20 #include "components/search_engines/template_url.h" | 21 #include "components/search_engines/template_url.h" |
21 #include "components/search_engines/template_url_prepopulate_data.h" | 22 #include "components/search_engines/template_url_prepopulate_data.h" |
22 #include "components/search_engines/template_url_service.h" | 23 #include "components/search_engines/template_url_service.h" |
23 | 24 |
24 base::string16 GetDefaultSearchEngineName(TemplateURLService* service) { | 25 base::string16 GetDefaultSearchEngineName(TemplateURLService* service) { |
25 DCHECK(service); | 26 DCHECK(service); |
26 const TemplateURL* const default_provider = | 27 const TemplateURL* const default_provider = |
27 service->GetDefaultSearchProvider(); | 28 service->GetDefaultSearchProvider(); |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 } | 370 } |
370 | 371 |
371 TemplateURLService::OwnedTemplateURLVector::iterator FindTemplateURL( | 372 TemplateURLService::OwnedTemplateURLVector::iterator FindTemplateURL( |
372 TemplateURLService::OwnedTemplateURLVector* urls, | 373 TemplateURLService::OwnedTemplateURLVector* urls, |
373 const TemplateURL* url) { | 374 const TemplateURL* url) { |
374 return std::find_if(urls->begin(), urls->end(), | 375 return std::find_if(urls->begin(), urls->end(), |
375 [url](const std::unique_ptr<TemplateURL>& ptr) { | 376 [url](const std::unique_ptr<TemplateURL>& ptr) { |
376 return ptr.get() == url; | 377 return ptr.get() == url; |
377 }); | 378 }); |
378 } | 379 } |
| 380 |
| 381 std::unique_ptr<TemplateURLData> TemplateUrlDataFromDictionary( |
| 382 const base::DictionaryValue& dict) { |
| 383 std::unique_ptr<TemplateURLData> result(base::MakeUnique<TemplateURLData>()); |
| 384 |
| 385 std::string search_url; |
| 386 base::string16 keyword; |
| 387 dict.GetString(DefaultSearchManager::kURL, &search_url); |
| 388 dict.GetString(DefaultSearchManager::kKeyword, &keyword); |
| 389 |
| 390 result->SetKeyword(keyword); |
| 391 result->SetURL(search_url); |
| 392 |
| 393 std::string id; |
| 394 dict.GetString(DefaultSearchManager::kID, &id); |
| 395 base::StringToInt64(id, &result->id); |
| 396 base::string16 short_name; |
| 397 dict.GetString(DefaultSearchManager::kShortName, &short_name); |
| 398 result->SetShortName(short_name); |
| 399 dict.GetInteger(DefaultSearchManager::kPrepopulateID, |
| 400 &result->prepopulate_id); |
| 401 dict.GetString(DefaultSearchManager::kSyncGUID, |
| 402 &result->sync_guid); |
| 403 dict.GetString(DefaultSearchManager::kSuggestionsURL, |
| 404 &result->suggestions_url); |
| 405 dict.GetString(DefaultSearchManager::kInstantURL, |
| 406 &result->instant_url); |
| 407 dict.GetString(DefaultSearchManager::kImageURL, &result->image_url); |
| 408 dict.GetString(DefaultSearchManager::kNewTabURL, &result->new_tab_url); |
| 409 |
| 410 std::string favicon_url; |
| 411 std::string originating_url; |
| 412 dict.GetString(DefaultSearchManager::kFaviconURL, &favicon_url); |
| 413 dict.GetString(DefaultSearchManager::kOriginatingURL, &originating_url); |
| 414 result->favicon_url = GURL(favicon_url); |
| 415 result->originating_url = GURL(originating_url); |
| 416 |
| 417 dict.GetString(DefaultSearchManager::kSearchURLPostParams, |
| 418 &result->search_url_post_params); |
| 419 dict.GetString(DefaultSearchManager::kSuggestionsURLPostParams, |
| 420 &result->suggestions_url_post_params); |
| 421 dict.GetString(DefaultSearchManager::kInstantURLPostParams, |
| 422 &result->instant_url_post_params); |
| 423 dict.GetString(DefaultSearchManager::kImageURLPostParams, |
| 424 &result->image_url_post_params); |
| 425 dict.GetBoolean(DefaultSearchManager::kSafeForAutoReplace, |
| 426 &result->safe_for_autoreplace); |
| 427 |
| 428 std::string date_created_str; |
| 429 std::string last_modified_str; |
| 430 dict.GetString(DefaultSearchManager::kDateCreated, &date_created_str); |
| 431 dict.GetString(DefaultSearchManager::kLastModified, &last_modified_str); |
| 432 |
| 433 int64_t date_created = 0; |
| 434 if (base::StringToInt64(date_created_str, &date_created)) { |
| 435 result->date_created = base::Time::FromInternalValue(date_created); |
| 436 } |
| 437 |
| 438 int64_t last_modified = 0; |
| 439 if (base::StringToInt64(date_created_str, &last_modified)) { |
| 440 result->last_modified = base::Time::FromInternalValue(last_modified); |
| 441 } |
| 442 |
| 443 dict.GetInteger(DefaultSearchManager::kUsageCount, &result->usage_count); |
| 444 |
| 445 const base::ListValue* alternate_urls = NULL; |
| 446 if (dict.GetList(DefaultSearchManager::kAlternateURLs, &alternate_urls)) { |
| 447 for (const auto& it : *alternate_urls) { |
| 448 std::string alternate_url; |
| 449 if (it->GetAsString(&alternate_url)) |
| 450 result->alternate_urls.push_back(alternate_url); |
| 451 } |
| 452 } |
| 453 |
| 454 const base::ListValue* encodings = NULL; |
| 455 if (dict.GetList(DefaultSearchManager::kInputEncodings, &encodings)) { |
| 456 for (const auto& it : *encodings) { |
| 457 std::string encoding; |
| 458 if (it->GetAsString(&encoding)) |
| 459 result->input_encodings.push_back(encoding); |
| 460 } |
| 461 } |
| 462 |
| 463 dict.GetString(DefaultSearchManager::kSearchTermsReplacementKey, |
| 464 &result->search_terms_replacement_key); |
| 465 dict.GetBoolean(DefaultSearchManager::kCreatedByPolicy, |
| 466 &result->created_by_policy); |
| 467 |
| 468 result->show_in_default_list = true; |
| 469 return result; |
| 470 } |
| 471 |
| 472 std::unique_ptr<base::DictionaryValue> TemplateUrlDataToDictionary( |
| 473 const TemplateURLData& data) { |
| 474 std::unique_ptr<base::DictionaryValue> url_dict( |
| 475 base::MakeUnique<base::DictionaryValue>()); |
| 476 |
| 477 url_dict->SetString(DefaultSearchManager::kID, base::Int64ToString(data.id)); |
| 478 url_dict->SetString(DefaultSearchManager::kShortName, data.short_name()); |
| 479 url_dict->SetString(DefaultSearchManager::kKeyword, data.keyword()); |
| 480 url_dict->SetInteger(DefaultSearchManager::kPrepopulateID, |
| 481 data.prepopulate_id); |
| 482 url_dict->SetString(DefaultSearchManager::kSyncGUID, data.sync_guid); |
| 483 |
| 484 url_dict->SetString(DefaultSearchManager::kURL, data.url()); |
| 485 url_dict->SetString(DefaultSearchManager::kSuggestionsURL, |
| 486 data.suggestions_url); |
| 487 url_dict->SetString(DefaultSearchManager::kInstantURL, data.instant_url); |
| 488 url_dict->SetString(DefaultSearchManager::kImageURL, data.image_url); |
| 489 url_dict->SetString(DefaultSearchManager::kNewTabURL, data.new_tab_url); |
| 490 url_dict->SetString(DefaultSearchManager::kFaviconURL, |
| 491 data.favicon_url.spec()); |
| 492 url_dict->SetString(DefaultSearchManager::kOriginatingURL, |
| 493 data.originating_url.spec()); |
| 494 |
| 495 url_dict->SetString(DefaultSearchManager::kSearchURLPostParams, |
| 496 data.search_url_post_params); |
| 497 url_dict->SetString(DefaultSearchManager::kSuggestionsURLPostParams, |
| 498 data.suggestions_url_post_params); |
| 499 url_dict->SetString(DefaultSearchManager::kInstantURLPostParams, |
| 500 data.instant_url_post_params); |
| 501 url_dict->SetString(DefaultSearchManager::kImageURLPostParams, |
| 502 data.image_url_post_params); |
| 503 |
| 504 url_dict->SetBoolean(DefaultSearchManager::kSafeForAutoReplace, |
| 505 data.safe_for_autoreplace); |
| 506 |
| 507 url_dict->SetString(DefaultSearchManager::kDateCreated, |
| 508 base::Int64ToString(data.date_created.ToInternalValue())); |
| 509 url_dict->SetString(DefaultSearchManager::kLastModified, |
| 510 base::Int64ToString(data.last_modified.ToInternalValue())); |
| 511 url_dict->SetInteger(DefaultSearchManager::kUsageCount, data.usage_count); |
| 512 |
| 513 std::unique_ptr<base::ListValue> alternate_urls(new base::ListValue); |
| 514 for (std::vector<std::string>::const_iterator it = |
| 515 data.alternate_urls.begin(); |
| 516 it != data.alternate_urls.end(); ++it) { |
| 517 alternate_urls->AppendString(*it); |
| 518 } |
| 519 url_dict->Set(DefaultSearchManager::kAlternateURLs, alternate_urls.release()); |
| 520 |
| 521 std::unique_ptr<base::ListValue> encodings(new base::ListValue); |
| 522 for (std::vector<std::string>::const_iterator it = |
| 523 data.input_encodings.begin(); |
| 524 it != data.input_encodings.end(); ++it) { |
| 525 encodings->AppendString(*it); |
| 526 } |
| 527 url_dict->Set(DefaultSearchManager::kInputEncodings, encodings.release()); |
| 528 |
| 529 url_dict->SetString(DefaultSearchManager::kSearchTermsReplacementKey, |
| 530 data.search_terms_replacement_key); |
| 531 |
| 532 url_dict->SetBoolean(DefaultSearchManager::kCreatedByPolicy, |
| 533 data.created_by_policy); |
| 534 return url_dict; |
| 535 } |
OLD | NEW |