// Copyright 2015 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.

// An API to listen queries of the Chrome Launcher and provide search results
// to it.
[platforms=("chromeos"),
 implemented_in="chrome/browser/chromeos/extensions/launcher_search_provider.h",
 nodoc]
namespace launcherSearchProvider {
  dictionary SearchResult {
    DOMString itemId;
    DOMString title;
    // If iconUrl is not provided, app/extension icon is used automatically.
    DOMString? iconUrl;
    // Relevance ranges from 0 to 4. 0 is the lowest relevance, 4 is highest.
    long relevance;
  };

  interface Functions {
    // Sets search result of this extension for the query. Setting a new search
    // results overwrites any previous results of this extension. If queryId is
    // invalid, the results are discarded. Since the space is limited, it is not
    // guranteed that all provided results are shown to a user. The search
    // results will be sorted by relevance, with ties broken by the order of the
    // results in this list (highest priority first).
    static void setSearchResults(long queryId, SearchResult[] results);
  };

  interface Events {
    // Called when a user typed a query. maxResult is the maximum number of
    // results the extension should provide.
    static void onQueryStarted(long queryId,
                               DOMString query,
                               long maxResult);

    // Called when query of |queryId| is ended. After this call,
    // setSearchResults no longer accept the results for queryId.
    static void onQueryEnded(long queryId);

    // Called when a user clicks a search result which is provided by
    // setSearchResults.
    static void onOpenResult(DOMString itemId);
  };
};
