1// Copyright 2014 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_BROWSER_UI_SEARCH_SEARCH_TAB_HELPER_DELEGATE_H_
6#define CHROME_BROWSER_UI_SEARCH_SEARCH_TAB_HELPER_DELEGATE_H_
7
8#include <set>
9#include <string>
10
11#include "ui/base/window_open_disposition.h"
12
13namespace content {
14class WebContents;
15}
16
17class GURL;
18class OmniboxView;
19
20// Objects implement this interface to get notified about changes in the
21// SearchTabHelper and to provide necessary functionality.
22class SearchTabHelperDelegate {
23 public:
24  // Navigates the page to |url| in response to a click event. Usually used
25  // by the page to navigate to privileged destinations (e.g. chrome:// URLs) or
26  // to navigate to URLs that are hidden from the page using Restricted IDs
27  // (rid in the API).
28  //
29  // TODO(kmadhusu): Handle search results page navigations to privileged
30  // destinations in a seperate function. This function should handle only the
31  // new tab page thumbnail click events.
32  virtual void NavigateOnThumbnailClick(const GURL& url,
33                                        WindowOpenDisposition disposition,
34                                        content::WebContents* source_contents);
35
36  // Invoked when the |web_contents| no longer supports Instant.
37  virtual void OnWebContentsInstantSupportDisabled(
38      const content::WebContents* web_contents);
39
40  // Returns the OmniboxView or NULL if not available.
41  virtual OmniboxView* GetOmniboxView();
42
43  // Returns a set containing the canonical URLs of the currently open tabs.
44  virtual std::set<std::string> GetOpenUrls();
45
46 protected:
47  virtual ~SearchTabHelperDelegate();
48};
49
50#endif  // CHROME_BROWSER_UI_SEARCH_SEARCH_TAB_HELPER_DELEGATE_H_
51