search_provider_install_state_message_filter.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright (c) 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_BROWSER_SEARCH_ENGINES_SEARCH_PROVIDER_INSTALL_STATE_MESSAGE_FILTER_H_
6#define CHROME_BROWSER_SEARCH_ENGINES_SEARCH_PROVIDER_INSTALL_STATE_MESSAGE_FILTER_H_
7
8#include "base/memory/weak_ptr.h"
9#include "chrome/browser/search_engines/search_provider_install_data.h"
10#include "chrome/common/search_provider.h"
11#include "content/public/browser/browser_message_filter.h"
12
13class GURL;
14class Profile;
15
16// Handles messages regarding search provider install state on the I/O thread.
17class SearchProviderInstallStateMessageFilter
18    : public content::BrowserMessageFilter {
19 public:
20  // Unlike the other methods, the constructor must be called on the UI thread.
21  SearchProviderInstallStateMessageFilter(int render_process_id,
22                                          Profile* profile);
23
24  // content::BrowserMessageFilter implementation.
25  virtual bool OnMessageReceived(const IPC::Message& message,
26                                 bool* message_was_ok) OVERRIDE;
27
28 private:
29  virtual ~SearchProviderInstallStateMessageFilter();
30
31  // Figures out the install state for the search provider.
32   search_provider::InstallState GetSearchProviderInstallState(
33      const GURL& page_location,
34      const GURL& requested_host);
35
36  // Starts handling the message requesting the search provider install state.
37  void OnGetSearchProviderInstallState(const GURL& page_location,
38                                       const GURL& requested_host,
39                                       IPC::Message* reply_msg);
40
41  // Sends the reply message about the search provider install state.
42  void ReplyWithProviderInstallState(const GURL& page_location,
43                                     const GURL& requested_host,
44                                     IPC::Message* reply_msg);
45
46  // Used to do a load and get information about install states.
47  SearchProviderInstallData provider_data_;
48
49  // Copied from the profile since the profile can't be accessed on the I/O
50  // thread.
51  const bool is_off_the_record_;
52
53  // Used to schedule invocations of ReplyWithProviderInstallState.
54  base::WeakPtrFactory<SearchProviderInstallStateMessageFilter> weak_factory_;
55
56  DISALLOW_COPY_AND_ASSIGN(SearchProviderInstallStateMessageFilter);
57};
58
59#endif  // CHROME_BROWSER_SEARCH_ENGINES_SEARCH_PROVIDER_INSTALL_STATE_MESSAGE_FILTER_H_
60