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
11namespace v8 {
12class Extension;
13}
14
15namespace blink {
16class WebFrame;
17}
18
19namespace extensions_v8 {
20
21// Reference implementation of the SearchBox API as described in:
22// http://dev.chromium.org/searchbox
23class 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