// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_UI_SEARCH_SEARCH_IPC_ROUTER_POLICY_IMPL_H_
#define CHROME_BROWSER_UI_SEARCH_SEARCH_IPC_ROUTER_POLICY_IMPL_H_

#include "chrome/browser/ui/search/search_ipc_router.h"

namespace content {
class WebContents;
}

// The SearchIPCRouter::Policy implementation.
class SearchIPCRouterPolicyImpl : public SearchIPCRouter::Policy {
 public:
  explicit SearchIPCRouterPolicyImpl(const content::WebContents* web_contents);
  virtual ~SearchIPCRouterPolicyImpl();

 private:
  friend class SearchIPCRouterPolicyTest;

  // Overridden from SearchIPCRouter::Policy:
  virtual bool ShouldProcessSetVoiceSearchSupport() OVERRIDE;
  virtual bool ShouldProcessFocusOmnibox(bool is_active_tab) OVERRIDE;
  virtual bool ShouldProcessNavigateToURL(bool is_active_tab) OVERRIDE;
  virtual bool ShouldProcessDeleteMostVisitedItem() OVERRIDE;
  virtual bool ShouldProcessUndoMostVisitedDeletion() OVERRIDE;
  virtual bool ShouldProcessUndoAllMostVisitedDeletions() OVERRIDE;
  virtual bool ShouldProcessLogEvent() OVERRIDE;
  virtual bool ShouldProcessPasteIntoOmnibox(bool is_active_tab) OVERRIDE;
  virtual bool ShouldProcessChromeIdentityCheck() OVERRIDE;
  virtual bool ShouldSendSetPromoInformation() OVERRIDE;
  virtual bool ShouldSendSetDisplayInstantResults() OVERRIDE;
  virtual bool ShouldSendSetSuggestionToPrefetch() OVERRIDE;
  virtual bool ShouldSendMostVisitedItems() OVERRIDE;
  virtual bool ShouldSendThemeBackgroundInfo() OVERRIDE;
  virtual bool ShouldSendToggleVoiceSearch() OVERRIDE;
  virtual bool ShouldSubmitQuery() OVERRIDE;

  // Used by unit tests.
  void set_is_incognito(bool is_incognito) {
    is_incognito_ = is_incognito;
  }

  const content::WebContents* web_contents_;
  bool is_incognito_;

  DISALLOW_COPY_AND_ASSIGN(SearchIPCRouterPolicyImpl);
};

#endif  // CHROME_BROWSER_UI_SEARCH_SEARCH_IPC_ROUTER_POLICY_IMPL_H_
