// 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.
//
// KeywordExtensionsDelegate contains the extensions-only logic used by
// KeywordProvider.
// This file contains the dummy implementation of KeywordExtensionsDelegate,
// which does nothing.
#ifndef COMPONENTS_OMNIBOX_KEYWORD_EXTENSIONS_DELEGATE_H_
#define COMPONENTS_OMNIBOX_KEYWORD_EXTENSIONS_DELEGATE_H_
#include <string>
#include "base/basictypes.h"
#include "base/macros.h"
#include "base/strings/string16.h"
class AutocompleteInput;
class KeywordProvider;
class TemplateURL;
class KeywordExtensionsDelegate {
public:
explicit KeywordExtensionsDelegate(KeywordProvider* provider);
virtual ~KeywordExtensionsDelegate();
// Increments the input ID used to identify if the suggest results from an
// extension are current.
virtual void IncrementInputId();
// Returns true if an extension is enabled.
virtual bool IsEnabledExtension(const std::string& extension_id);
// Handles the extensions portion of KeywordProvider::Start().
// Depending on |minimal_changes| and whether |input| wants matches
// synchronous or not, either updates the KeywordProvider's matches with
// the existing suggestions or asks the |template_url|'s extension to provide
// matches.
// Returns true if this delegate should stay in extension keyword mode.
virtual bool Start(const AutocompleteInput& input,
bool minimal_changes,
const TemplateURL* template_url,
const base::string16& remaining_input);
// Tells the extension with |extension_id| that the user typed the omnibox
// keyword.
virtual void EnterExtensionKeywordMode(const std::string& extension_id);
// If an extension previously entered extension keyword mode, exits extension
// keyword mode. This happens when the user has cleared the keyword or closed
// the omnibox popup.
virtual void MaybeEndExtensionKeywordMode();
private:
DISALLOW_COPY_AND_ASSIGN(KeywordExtensionsDelegate);
};
#endif // COMPONENTS_OMNIBOX_KEYWORD_EXTENSIONS_DELEGATE_H_