1 // Copyright (c) 2013 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 CHROME_BROWSER_CHROMEOS_DRIVE_SEARCH_METADATA_H_ 6 #define CHROME_BROWSER_CHROMEOS_DRIVE_SEARCH_METADATA_H_ 7 8 #include <string> 9 10 #include "chrome/browser/chromeos/drive/file_system_interface.h" 11 12 namespace base { 13 namespace i18n { 14 class FixedPatternStringSearchIgnoringCaseAndAccents; 15 } // namespace i18n 16 } // namespace base 17 18 namespace drive { 19 namespace internal { 20 21 class ResourceMetadata; 22 23 // Searches the local resource metadata, and returns the entries 24 // |at_most_num_matches| that contain |query| in their base names. Search is 25 // done in a case-insensitive fashion. The eligible entries are selected based 26 // on the given |options|, which is a bit-wise OR of SearchMetadataOptions. 27 // |callback| must not be null. Must be called on UI thread. Empty |query| 28 // matches any base name. i.e. returns everything. |blocking_task_runner| must 29 // be the same one as |resource_metadata| uses. 30 void SearchMetadata( 31 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner, 32 ResourceMetadata* resource_metadata, 33 const std::string& query, 34 int search_options, 35 int at_most_num_matches, 36 const SearchMetadataCallback& callback); 37 38 // Finds |query| in |text| while ignoring cases or accents. Cases of non-ASCII 39 // characters are also ignored; they are compared in the 'Primary Level' of 40 // http://userguide.icu-project.org/collation/concepts. 41 // Returns true if |query| is found. |highlighted_text| will have the original 42 // text with matched portions highlighted with <b> tag (only the first match 43 // is highlighted). Meta characters are escaped like <. The original 44 // contents of |highlighted_text| will be lost. 45 bool FindAndHighlight( 46 const std::string& text, 47 base::i18n::FixedPatternStringSearchIgnoringCaseAndAccents* query, 48 std::string* highlighted_text); 49 50 } // namespace internal 51 } // namespace drive 52 53 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_SEARCH_METADATA_H_ 54