Home | History | Annotate | Download | only in browser
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_TITLE_MATCH_H_
      6 #define COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_TITLE_MATCH_H_
      7 
      8 #include <cstddef>
      9 #include <utility>
     10 #include <vector>
     11 
     12 class BookmarkNode;
     13 
     14 namespace bookmarks {
     15 
     16 struct BookmarkMatch {
     17   // Each MatchPosition is the [begin, end) positions of a match within a
     18   // string.
     19   typedef std::pair<size_t, size_t> MatchPosition;
     20   typedef std::vector<MatchPosition> MatchPositions;
     21 
     22   BookmarkMatch();
     23   ~BookmarkMatch();
     24 
     25   // Extracts and returns the offsets from |match_positions|.
     26   static std::vector<size_t> OffsetsFromMatchPositions(
     27       const MatchPositions& match_positions);
     28 
     29   // Replaces the offsets in |match_positions| with those given in |offsets|,
     30   // deleting any which are npos, and returns the updated list of match
     31   // positions.
     32   static MatchPositions ReplaceOffsetsInMatchPositions(
     33       const MatchPositions& match_positions,
     34       const std::vector<size_t>& offsets);
     35 
     36   // The matching node of a query.
     37   const BookmarkNode* node;
     38 
     39   // Location of the matching words in the title of the node.
     40   MatchPositions title_match_positions;
     41 
     42   // Location of the matching words in the URL of the node.
     43   MatchPositions url_match_positions;
     44 };
     45 
     46 }  // namespace bookmarks
     47 
     48 #endif  // COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_TITLE_MATCH_H_
     49