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 #ifndef COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_H_ | 5 #ifndef COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_H_ |
6 #define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_H_ | 6 #define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
491 // is made a friend so that it can be the exception to this pattern. | 491 // is made a friend so that it can be the exception to this pattern. |
492 class TemplateURL { | 492 class TemplateURL { |
493 public: | 493 public: |
494 enum Type { | 494 enum Type { |
495 // Regular search engine. | 495 // Regular search engine. |
496 NORMAL, | 496 NORMAL, |
497 // Installed by extension through Override Settings API. | 497 // Installed by extension through Override Settings API. |
498 NORMAL_CONTROLLED_BY_EXTENSION, | 498 NORMAL_CONTROLLED_BY_EXTENSION, |
499 // The keyword associated with an extension that uses the Omnibox API. | 499 // The keyword associated with an extension that uses the Omnibox API. |
500 OMNIBOX_API_EXTENSION, | 500 OMNIBOX_API_EXTENSION, |
501 // Installed only on this device. Should not be synced. | |
502 LOCAL, | |
501 }; | 503 }; |
502 | 504 |
503 // An AssociatedExtensionInfo represents information about the extension that | 505 // An AssociatedExtensionInfo represents information about the extension that |
504 // added the search engine. | 506 // added the search engine. |
505 struct AssociatedExtensionInfo { | 507 struct AssociatedExtensionInfo { |
506 AssociatedExtensionInfo(Type type, const std::string& extension_id); | 508 AssociatedExtensionInfo(const std::string& extension_id); |
Peter Kasting
2016/09/21 21:45:08
Nit: explicit
Ian Wen
2016/09/21 23:12:38
Done.
| |
507 ~AssociatedExtensionInfo(); | 509 ~AssociatedExtensionInfo(); |
508 | 510 |
509 Type type; | |
510 | |
511 std::string extension_id; | 511 std::string extension_id; |
512 | 512 |
513 // Whether the search engine is supposed to be default. | 513 // Whether the search engine is supposed to be default. |
514 bool wants_to_be_default_engine; | 514 bool wants_to_be_default_engine; |
515 | 515 |
516 // Used to resolve conflicts when there are multiple extensions specifying | 516 // Used to resolve conflicts when there are multiple extensions specifying |
517 // the default search engine. The most recently-installed wins. | 517 // the default search engine. The most recently-installed wins. |
518 base::Time install_time; | 518 base::Time install_time; |
519 }; | 519 }; |
520 | 520 |
521 explicit TemplateURL(const TemplateURLData& data); | 521 TemplateURL(const TemplateURLData& data, Type type = NORMAL); |
Peter Kasting
2016/09/21 21:45:08
Nit: I think this still needs "explicit"? Or does
Ian Wen
2016/09/21 23:12:38
Compiler allows it. Yet I agree explicit should be
Peter Kasting
2016/09/23 01:28:36
What I meant was, if the compiler allows it, we de
| |
522 ~TemplateURL(); | 522 ~TemplateURL(); |
523 | 523 |
524 // Generates a suitable keyword for the specified url, which must be valid. | 524 // Generates a suitable keyword for the specified url, which must be valid. |
525 // This is guaranteed not to return an empty string, since TemplateURLs should | 525 // This is guaranteed not to return an empty string, since TemplateURLs should |
526 // never have an empty keyword. | 526 // never have an empty keyword. |
527 static base::string16 GenerateKeyword(const GURL& url); | 527 static base::string16 GenerateKeyword(const GURL& url); |
528 | 528 |
529 // Generates a favicon URL from the specified url. | 529 // Generates a favicon URL from the specified url. |
530 static GURL GenerateFaviconURL(const GURL& url); | 530 static GURL GenerateFaviconURL(const GURL& url); |
531 | 531 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
605 const TemplateURLRef& suggestions_url_ref() const { | 605 const TemplateURLRef& suggestions_url_ref() const { |
606 return suggestions_url_ref_; | 606 return suggestions_url_ref_; |
607 } | 607 } |
608 const TemplateURLRef& instant_url_ref() const { return instant_url_ref_; } | 608 const TemplateURLRef& instant_url_ref() const { return instant_url_ref_; } |
609 const TemplateURLRef& image_url_ref() const { return image_url_ref_; } | 609 const TemplateURLRef& image_url_ref() const { return image_url_ref_; } |
610 const TemplateURLRef& new_tab_url_ref() const { return new_tab_url_ref_; } | 610 const TemplateURLRef& new_tab_url_ref() const { return new_tab_url_ref_; } |
611 const TemplateURLRef& contextual_search_url_ref() const { | 611 const TemplateURLRef& contextual_search_url_ref() const { |
612 return contextual_search_url_ref_; | 612 return contextual_search_url_ref_; |
613 } | 613 } |
614 | 614 |
615 Type type() const { return type_; } | |
616 void set_type(Type type) { type_ = type; } | |
617 | |
615 // This setter shouldn't be used except by TemplateURLService and | 618 // This setter shouldn't be used except by TemplateURLService and |
616 // TemplateURLServiceClient implementations. | 619 // TemplateURLServiceClient implementations. |
617 void set_extension_info( | 620 void set_extension_info( |
618 std::unique_ptr<AssociatedExtensionInfo> extension_info) { | 621 std::unique_ptr<AssociatedExtensionInfo> extension_info) { |
619 extension_info_ = std::move(extension_info); | 622 extension_info_ = std::move(extension_info); |
620 } | 623 } |
621 | 624 |
622 // Returns true if |url| supports replacement. | 625 // Returns true if |url| supports replacement. |
623 bool SupportsReplacement(const SearchTermsData& search_terms_data) const; | 626 bool SupportsReplacement(const SearchTermsData& search_terms_data) const; |
624 | 627 |
625 // Returns true if any URLRefs use Googe base URLs. | 628 // Returns true if any URLRefs use Googe base URLs. |
626 bool HasGoogleBaseURLs(const SearchTermsData& search_terms_data) const; | 629 bool HasGoogleBaseURLs(const SearchTermsData& search_terms_data) const; |
627 | 630 |
628 // Returns true if this TemplateURL uses Google base URLs and has a keyword | 631 // Returns true if this TemplateURL uses Google base URLs and has a keyword |
629 // of "google.TLD". We use this to decide whether we can automatically | 632 // of "google.TLD". We use this to decide whether we can automatically |
630 // update the keyword to reflect the current Google base URL TLD. | 633 // update the keyword to reflect the current Google base URL TLD. |
631 bool IsGoogleSearchURLWithReplaceableKeyword( | 634 bool IsGoogleSearchURLWithReplaceableKeyword( |
632 const SearchTermsData& search_terms_data) const; | 635 const SearchTermsData& search_terms_data) const; |
633 | 636 |
634 // Returns true if the keywords match or if | 637 // Returns true if the keywords match or if |
635 // IsGoogleSearchURLWithReplaceableKeyword() is true for both |this| and | 638 // IsGoogleSearchURLWithReplaceableKeyword() is true for both |this| and |
636 // |other|. | 639 // |other|. |
637 bool HasSameKeywordAs(const TemplateURLData& other, | 640 bool HasSameKeywordAs(const TemplateURLData& other, |
638 const SearchTermsData& search_terms_data) const; | 641 const SearchTermsData& search_terms_data) const; |
639 | 642 |
640 Type GetType() const; | |
641 | |
642 // Returns the id of the extension that added this search engine. Only call | 643 // Returns the id of the extension that added this search engine. Only call |
643 // this for TemplateURLs of type NORMAL_CONTROLLED_BY_EXTENSION or | 644 // this for TemplateURLs of type NORMAL_CONTROLLED_BY_EXTENSION or |
644 // OMNIBOX_API_EXTENSION. | 645 // OMNIBOX_API_EXTENSION. |
645 std::string GetExtensionId() const; | 646 std::string GetExtensionId() const; |
646 | 647 |
647 // Returns the type of this search engine, or SEARCH_ENGINE_OTHER if no | 648 // Returns the type of this search engine, or SEARCH_ENGINE_OTHER if no |
648 // engines match. | 649 // engines match. |
649 SearchEngineType GetEngineType( | 650 SearchEngineType GetEngineType( |
650 const SearchTermsData& search_terms_data) const; | 651 const SearchTermsData& search_terms_data) const; |
651 | 652 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
750 TemplateURLRef suggestions_url_ref_; | 751 TemplateURLRef suggestions_url_ref_; |
751 TemplateURLRef instant_url_ref_; | 752 TemplateURLRef instant_url_ref_; |
752 TemplateURLRef image_url_ref_; | 753 TemplateURLRef image_url_ref_; |
753 TemplateURLRef new_tab_url_ref_; | 754 TemplateURLRef new_tab_url_ref_; |
754 TemplateURLRef contextual_search_url_ref_; | 755 TemplateURLRef contextual_search_url_ref_; |
755 std::unique_ptr<AssociatedExtensionInfo> extension_info_; | 756 std::unique_ptr<AssociatedExtensionInfo> extension_info_; |
756 | 757 |
757 // Caches the computed engine type across successive calls to GetEngineType(). | 758 // Caches the computed engine type across successive calls to GetEngineType(). |
758 mutable SearchEngineType engine_type_; | 759 mutable SearchEngineType engine_type_; |
759 | 760 |
761 Type type_; | |
Peter Kasting
2016/09/21 21:45:08
Nit: I'd probably place this above |engine_type_|.
Ian Wen
2016/09/21 23:12:38
Done.
| |
762 | |
760 // TODO(sky): Add date last parsed OSD file. | 763 // TODO(sky): Add date last parsed OSD file. |
761 | 764 |
762 DISALLOW_COPY_AND_ASSIGN(TemplateURL); | 765 DISALLOW_COPY_AND_ASSIGN(TemplateURL); |
763 }; | 766 }; |
764 | 767 |
765 #endif // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_H_ | 768 #endif // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_H_ |
OLD | NEW |