- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / app_list / search / search_provider.h
1 // Copyright 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_UI_APP_LIST_SEARCH_SEARCH_PROVIDER_H_
6 #define CHROME_BROWSER_UI_APP_LIST_SEARCH_SEARCH_PROVIDER_H_
7
8 #include "base/basictypes.h"
9 #include "base/callback.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/scoped_vector.h"
12 #include "base/strings/string16.h"
13
14 namespace app_list {
15
16 class ChromeSearchResult;
17
18 class SearchProvider {
19  public:
20   typedef ScopedVector<ChromeSearchResult> Results;
21   typedef base::Closure ResultChangedCallback;
22
23   SearchProvider();
24   virtual ~SearchProvider();
25
26   // Invoked to start a query.
27   virtual void Start(const base::string16& query) = 0;
28
29   // Invoked to stop the current query and no more results changes.
30   virtual void Stop() = 0;
31
32   void set_result_changed_callback(const ResultChangedCallback& callback) {
33     result_changed_callback_ = callback;
34   }
35
36   const Results& results() const { return results_; }
37
38  protected:
39   // Interface for the derived class to generate search results.
40   void Add(scoped_ptr<ChromeSearchResult> result);
41   void ClearResults();
42
43  private:
44   void FireResultChanged();
45
46   ResultChangedCallback result_changed_callback_;
47   Results results_;
48
49   DISALLOW_COPY_AND_ASSIGN(SearchProvider);
50 };
51
52 }  // namespace app_list
53
54 #endif  // CHROME_BROWSER_UI_APP_LIST_SEARCH_SEARCH_PROVIDER_H_