190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_APP_LIST_SEARCH_CHROME_SEARCH_RESULT_H_ 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CHROME_BROWSER_UI_APP_LIST_SEARCH_CHROME_SEARCH_RESULT_H_ 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include <string> 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ui/app_list/search_result.h" 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace app_list { 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// The type of the search result. This is used for logging so do not change the 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// order of this enum. 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochenum ChromeSearchResultType { 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // A result that forwards an omnibox search result. 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch OMNIBOX_SEARCH_RESULT, 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // An app result. 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch APP_SEARCH_RESULT, 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // A search result from the webstore. 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch WEBSTORE_SEARCH_RESULT, 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // A result that opens a webstore search. 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SEARCH_WEBSTORE_SEARCH_RESULT, 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SEARCH_RESULT_TYPE_BOUNDARY 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Base class of all search results. It provides an additional interface 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// for SearchController to mix the results, duplicate a result from a 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// SearchProvider and pass it to UI and invoke actions on the results when 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// underlying UI is activated. 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class ChromeSearchResult : public SearchResult { 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public: 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ChromeSearchResult() : relevance_(0.0) {} 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual ~ChromeSearchResult() {} 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Opens the result. 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void Open(int event_flags) = 0; 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Invokes a custom action on the result. 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void InvokeAction(int action_index, int event_flags) = 0; 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Creates a copy of the result. 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual scoped_ptr<ChromeSearchResult> Duplicate() = 0; 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ChromeSearchResultType GetType() = 0; 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string& id() const { return id_; } 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) double relevance() { return relevance_; } 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) protected: 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void set_id(const std::string& id) { id_ = id; } 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void set_relevance(double relevance) { relevance_ = relevance; } 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) private: 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::string id_; 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) double relevance_; 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ChromeSearchResult); 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace app_list 6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif // CHROME_BROWSER_UI_APP_LIST_SEARCH_CHROME_SEARCH_RESULT_H_ 66