| Index: chrome/browser/search_engines/search_provider_install_state_message_filter.h
|
| diff --git a/chrome/browser/search_engines/search_provider_install_state_message_filter.h b/chrome/browser/search_engines/search_provider_install_state_message_filter.h
|
| index 8c7de99087cbbe436348005bafaa5b2a68f7fbc0..f02797dc87ce656bc4c21b27c1f9e408cad0a5d9 100644
|
| --- a/chrome/browser/search_engines/search_provider_install_state_message_filter.h
|
| +++ b/chrome/browser/search_engines/search_provider_install_state_message_filter.h
|
| @@ -5,43 +5,55 @@
|
| #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/callback.h"
|
| #include "base/macros.h"
|
| #include "base/memory/weak_ptr.h"
|
| +#include "base/supports_user_data.h"
|
| #include "chrome/browser/search_engines/search_provider_install_data.h"
|
| #include "chrome/common/search_provider.h"
|
| +#include "chrome/common/search_provider.mojom.h"
|
| #include "content/public/browser/browser_message_filter.h"
|
| +#include "mojo/public/cpp/bindings/binding_set.h"
|
|
|
| class GURL;
|
| class Profile;
|
|
|
| +class SearchProviderInstallStateMessageFilterAdapter;
|
| +
|
| // Handles messages regarding search provider install state on the I/O thread.
|
| class SearchProviderInstallStateMessageFilter
|
| - : public content::BrowserMessageFilter {
|
| + : public mojom::SearchProviderInstallState {
|
| public:
|
| // Unlike the other methods, the constructor must be called on the UI thread.
|
| SearchProviderInstallStateMessageFilter(int render_process_id,
|
| Profile* profile);
|
|
|
| - // content::BrowserMessageFilter implementation.
|
| - bool OnMessageReceived(const IPC::Message& message) override;
|
| + void Bind(mojom::SearchProviderInstallStateRequest request);
|
| +
|
| + // Key used to attach the filter to the RenderProcessHost.
|
| + static const char kRenderProcessHostKey[];
|
| +
|
|
|
| - private:
|
| ~SearchProviderInstallStateMessageFilter() override;
|
|
|
| + private:
|
| // 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);
|
| + void GetInstallState(
|
| + const GURL& page_location,
|
| + const GURL& requested_host,
|
| + const base::Callback<void(search_provider::InstallState)>& callback)
|
| + override;
|
|
|
| // Sends the reply message about the search provider install state.
|
| - void ReplyWithProviderInstallState(const GURL& page_location,
|
| - const GURL& requested_host,
|
| - IPC::Message* reply_msg);
|
| + void ReplyWithProviderInstallState(
|
| + const GURL& page_location,
|
| + const GURL& requested_host,
|
| + const base::Callback<void(search_provider::InstallState)>& callback);
|
|
|
| // Used to do a load and get information about install states.
|
| SearchProviderInstallData provider_data_;
|
| @@ -50,10 +62,32 @@ class SearchProviderInstallStateMessageFilter
|
| // thread.
|
| const bool is_off_the_record_;
|
|
|
| + // TODO(tibell): Add binding of some sort. Binding on IO thread.
|
| + mojo::BindingSet<mojom::SearchProviderInstallState> binding_set_;
|
| +
|
| // Used to schedule invocations of ReplyWithProviderInstallState.
|
| base::WeakPtrFactory<SearchProviderInstallStateMessageFilter> weak_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(SearchProviderInstallStateMessageFilter);
|
| };
|
|
|
| +// Adapter used to store the filter inside user data and be deleted on the right
|
| +// thread.
|
| +class SearchProviderInstallStateMessageFilterAdapter
|
| + : public base::SupportsUserData::Data {
|
| + public:
|
| + // Takes ownership of the argument.
|
| + SearchProviderInstallStateMessageFilterAdapter(
|
| + SearchProviderInstallStateMessageFilter* filter);
|
| + ~SearchProviderInstallStateMessageFilterAdapter() override;
|
| +
|
| + SearchProviderInstallStateMessageFilter* Get() { return ptr_.get(); }
|
| +
|
| + private:
|
| + std::unique_ptr<SearchProviderInstallStateMessageFilter,
|
| + content::BrowserThread::DeleteOnIOThread> ptr_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(SearchProviderInstallStateMessageFilterAdapter);
|
| +};
|
| +
|
| #endif // CHROME_BROWSER_SEARCH_ENGINES_SEARCH_PROVIDER_INSTALL_STATE_MESSAGE_FILTER_H_
|
|
|