1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be 3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file. 4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef CHROME_BROWSER_UI_SEARCH_ENGINES_SEARCH_ENGINE_TAB_HELPER_H_ 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_UI_SEARCH_ENGINES_SEARCH_ENGINE_TAB_HELPER_H_ 7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#pragma once 8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/find_bar/find_bar_controller.h" 10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/find_bar/find_notification_details.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/common/search_provider.h" 12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/tab_contents/tab_contents_observer.h" 13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass SearchEngineTabHelperDelegate; 15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass TabContentsWrapper; 16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Per-tab search engine manager. Handles dealing search engine processing 18dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// functionality. 19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass SearchEngineTabHelper : public TabContentsObserver { 20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen public: 21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen explicit SearchEngineTabHelper(TabContents* tab_contents); 22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual ~SearchEngineTabHelper(); 23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen SearchEngineTabHelperDelegate* delegate() const { return delegate_; } 25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void set_delegate(SearchEngineTabHelperDelegate* d) { delegate_ = d; } 26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // TabContentsObserver overrides. 28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void DidNavigateMainFramePostCommit( 29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const NavigationController::LoadCommittedDetails& details, 30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const ViewHostMsg_FrameNavigate_Params& params) OVERRIDE; 31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen private: 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Handles when a page specifies an OSDD (OpenSearch Description Document). 35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void OnPageHasOSDD(int32 page_id, 36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const GURL& doc_url, 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const search_provider::OSDDType& msg_provider_type); 38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // If params has a searchable form, this tries to create a new keyword. 40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void GenerateKeywordIfNecessary( 41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const ViewHostMsg_FrameNavigate_Params& params); 42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Delegate for notifying our owner about stuff. Not owned by us. 44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen SearchEngineTabHelperDelegate* delegate_; 45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen DISALLOW_COPY_AND_ASSIGN(SearchEngineTabHelper); 47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}; 48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 49dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif // CHROME_BROWSER_UI_SEARCH_ENGINES_SEARCH_ENGINE_TAB_HELPER_H_ 50