// Copyright 2014 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 UI_APP_LIST_SEARCH_PROVIDER_H_ #define UI_APP_LIST_SEARCH_PROVIDER_H_ #include "base/callback.h" #include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "base/memory/scoped_vector.h" #include "base/strings/string16.h" #include "ui/app_list/app_list_export.h" namespace app_list { class SearchResult; class APP_LIST_EXPORT SearchProvider { public: typedef ScopedVector Results; typedef base::Closure ResultChangedCallback; SearchProvider(); virtual ~SearchProvider(); // Invoked to start a query. virtual void Start(bool is_voice_query, const base::string16& query) = 0; // Invoked to stop the current query and no more results changes. virtual void Stop() = 0; void set_result_changed_callback(const ResultChangedCallback& callback) { result_changed_callback_ = callback; } const Results& results() const { return results_; } protected: // Interface for the derived class to generate search results. void Add(scoped_ptr result); void ClearResults(); private: void FireResultChanged(); ResultChangedCallback result_changed_callback_; Results results_; DISALLOW_COPY_AND_ASSIGN(SearchProvider); }; } // namespace app_list #endif // UI_APP_LIST_SEARCH_PROVIDER_H_