| // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_CHROMEOS_DRIVE_SEARCH_METADATA_H_ |
| #define CHROME_BROWSER_CHROMEOS_DRIVE_SEARCH_METADATA_H_ |
| |
| #include <string> |
| |
| #include "chrome/browser/chromeos/drive/file_system_interface.h" |
| |
| namespace base { |
| namespace i18n { |
| class FixedPatternStringSearchIgnoringCaseAndAccents; |
| } // namespace i18n |
| } // namespace base |
| |
| namespace drive { |
| namespace internal { |
| |
| class ResourceMetadata; |
| |
| // Searches the local resource metadata, and returns the entries |
| // |at_most_num_matches| that contain |query| in their base names. Search is |
| // done in a case-insensitive fashion. The eligible entries are selected based |
| // on the given |options|, which is a bit-wise OR of SearchMetadataOptions. |
| // |callback| must not be null. Must be called on UI thread. Empty |query| |
| // matches any base name. i.e. returns everything. |blocking_task_runner| must |
| // be the same one as |resource_metadata| uses. |
| void SearchMetadata( |
| scoped_refptr<base::SequencedTaskRunner> blocking_task_runner, |
| ResourceMetadata* resource_metadata, |
| const std::string& query, |
| int search_options, |
| int at_most_num_matches, |
| const SearchMetadataCallback& callback); |
| |
| // Finds |query| in |text| while ignoring cases or accents. Cases of non-ASCII |
| // characters are also ignored; they are compared in the 'Primary Level' of |
| // http://userguide.icu-project.org/collation/concepts. |
| // Returns true if |query| is found. |highlighted_text| will have the original |
| // text with matched portions highlighted with <b> tag (only the first match |
| // is highlighted). Meta characters are escaped like <. The original |
| // contents of |highlighted_text| will be lost. |
| bool FindAndHighlight( |
| const std::string& text, |
| base::i18n::FixedPatternStringSearchIgnoringCaseAndAccents* query, |
| std::string* highlighted_text); |
| |
| } // namespace internal |
| } // namespace drive |
| |
| #endif // CHROME_BROWSER_CHROMEOS_DRIVE_SEARCH_METADATA_H_ |