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