146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file.
446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)//
546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// KeywordExtensionsDelegate contains the extensions-only logic used by
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// KeywordProvider.
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// This file contains the dummy implementation of KeywordExtensionsDelegate,
846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// which does nothing.
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#ifndef COMPONENTS_OMNIBOX_KEYWORD_EXTENSIONS_DELEGATE_H_
1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#define COMPONENTS_OMNIBOX_KEYWORD_EXTENSIONS_DELEGATE_H_
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include <string>
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/basictypes.h"
1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/macros.h"
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/strings/string16.h"
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class AutocompleteInput;
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class KeywordProvider;
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class TemplateURL;
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class KeywordExtensionsDelegate {
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  explicit KeywordExtensionsDelegate(KeywordProvider* provider);
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual ~KeywordExtensionsDelegate();
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Increments the input ID used to identify if the suggest results from an
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // extension are current.
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual void IncrementInputId();
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // Returns true if an extension is enabled.
336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  virtual bool IsEnabledExtension(const std::string& extension_id);
3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Handles the extensions portion of KeywordProvider::Start().
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Depending on |minimal_changes| and whether |input| wants matches
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // synchronous or not, either updates the KeywordProvider's matches with
3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // the existing suggestions or asks the |template_url|'s extension to provide
3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // matches.
4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Returns true if this delegate should stay in extension keyword mode.
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual bool Start(const AutocompleteInput& input,
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                     bool minimal_changes,
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                     const TemplateURL* template_url,
4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                     const base::string16& remaining_input);
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Tells the extension with |extension_id| that the user typed the omnibox
4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // keyword.
4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual void EnterExtensionKeywordMode(const std::string& extension_id);
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // If an extension previously entered extension keyword mode, exits extension
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // keyword mode. This happens when the user has cleared the keyword or closed
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // the omnibox popup.
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual void MaybeEndExtensionKeywordMode();
5446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) private:
5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(KeywordExtensionsDelegate);
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
5846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif  // COMPONENTS_OMNIBOX_KEYWORD_EXTENSIONS_DELEGATE_H_
60