1 // Copyright 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_RENDERER_SEARCHBOX_SEARCHBOX_EXTENSION_H_ 6 #define CHROME_RENDERER_SEARCHBOX_SEARCHBOX_EXTENSION_H_ 7 8 #include "base/basictypes.h" 9 #include "base/strings/string16.h" 10 11 namespace v8 { 12 class Extension; 13 } 14 15 namespace blink { 16 class WebFrame; 17 } 18 19 namespace extensions_v8 { 20 21 // Reference implementation of the SearchBox API as described in: 22 // http://dev.chromium.org/searchbox 23 class SearchBoxExtension { 24 public: 25 // Returns the v8::Extension object handling searchbox bindings. Returns null 26 // if match-preview is not enabled. Caller takes ownership of returned object. 27 static v8::Extension* Get(); 28 29 // Returns true if a page supports Instant, that is, if it has bound an 30 // onsubmit() handler. 31 static bool PageSupportsInstant(blink::WebFrame* frame); 32 33 // Helpers to dispatch Javascript events. 34 static void DispatchChromeIdentityCheckResult(blink::WebFrame* frame, 35 const base::string16& identity, 36 bool identity_match); 37 static void DispatchFocusChange(blink::WebFrame* frame); 38 static void DispatchInputCancel(blink::WebFrame* frame); 39 static void DispatchInputStart(blink::WebFrame* frame); 40 static void DispatchKeyCaptureChange(blink::WebFrame* frame); 41 static void DispatchMarginChange(blink::WebFrame* frame); 42 static void DispatchMostVisitedChanged(blink::WebFrame* frame); 43 static void DispatchSubmit(blink::WebFrame* frame); 44 static void DispatchSuggestionChange(blink::WebFrame* frame); 45 static void DispatchThemeChange(blink::WebFrame* frame); 46 static void DispatchToggleVoiceSearch(blink::WebFrame* frame); 47 48 private: 49 DISALLOW_IMPLICIT_CONSTRUCTORS(SearchBoxExtension); 50 }; 51 52 } // namespace extensions_v8 53 54 #endif // CHROME_RENDERER_SEARCHBOX_SEARCHBOX_EXTENSION_H_ 55