| // Copyright (c) 2012 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_SEARCH_ENGINES_SEARCH_PROVIDER_INSTALL_STATE_MESSAGE_FILTER_H_ |
| #define CHROME_BROWSER_SEARCH_ENGINES_SEARCH_PROVIDER_INSTALL_STATE_MESSAGE_FILTER_H_ |
| |
| #include "base/memory/weak_ptr.h" |
| #include "chrome/browser/search_engines/search_provider_install_data.h" |
| #include "chrome/common/search_provider.h" |
| #include "content/public/browser/browser_message_filter.h" |
| |
| class GURL; |
| class Profile; |
| |
| // Handles messages regarding search provider install state on the I/O thread. |
| class SearchProviderInstallStateMessageFilter |
| : public content::BrowserMessageFilter { |
| public: |
| // Unlike the other methods, the constructor must be called on the UI thread. |
| SearchProviderInstallStateMessageFilter(int render_process_id, |
| Profile* profile); |
| |
| // content::BrowserMessageFilter implementation. |
| virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
| |
| private: |
| virtual ~SearchProviderInstallStateMessageFilter(); |
| |
| // Figures out the install state for the search provider. |
| search_provider::InstallState GetSearchProviderInstallState( |
| const GURL& page_location, |
| const GURL& requested_host); |
| |
| // Starts handling the message requesting the search provider install state. |
| void OnGetSearchProviderInstallState(const GURL& page_location, |
| const GURL& requested_host, |
| IPC::Message* reply_msg); |
| |
| // Sends the reply message about the search provider install state. |
| void ReplyWithProviderInstallState(const GURL& page_location, |
| const GURL& requested_host, |
| IPC::Message* reply_msg); |
| |
| // Used to do a load and get information about install states. |
| SearchProviderInstallData provider_data_; |
| |
| // Copied from the profile since the profile can't be accessed on the I/O |
| // thread. |
| const bool is_off_the_record_; |
| |
| // Used to schedule invocations of ReplyWithProviderInstallState. |
| base::WeakPtrFactory<SearchProviderInstallStateMessageFilter> weak_factory_; |
| |
| DISALLOW_COPY_AND_ASSIGN(SearchProviderInstallStateMessageFilter); |
| }; |
| |
| #endif // CHROME_BROWSER_SEARCH_ENGINES_SEARCH_PROVIDER_INSTALL_STATE_MESSAGE_FILTER_H_ |