Chromium Code Reviews| 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..ba0663c34f1b3830a544056679da9d8dd9a2fac3 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 |
| @@ -7,41 +7,53 @@ |
| #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/render.mojom.h" |
| #include "chrome/common/search_provider.h" |
| #include "content/public/browser/browser_message_filter.h" |
| +#include "mojo/public/cpp/bindings/binding_set.h" |
| +#include "mojo/public/cpp/bindings/callback.h" |
| class GURL; |
| class Profile; |
| +class SearchProviderInstallStateMessageFilterAdapter; |
| + |
| // Handles messages regarding search provider install state on the I/O thread. |
| class SearchProviderInstallStateMessageFilter |
|
Sam McNally
2016/06/20 01:27:11
Rename this to SearchProviderInstallStateImpl and
tibell
2016/06/20 03:19:55
Done.
|
| - : 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( |
|
Sam McNally
2016/06/20 01:27:11
// mojom::SearchProviderInstallState override.
tibell
2016/06/20 03:19:55
Done.
|
| + const GURL& page_location, |
| + const GURL& requested_host, |
| + const mojo::Callback<void(search_provider::InstallState)>& callback) |
|
Sam McNally
2016/06/20 01:27:11
GetInstallStateCallback. Change everywhere.
tibell
2016/06/20 03:19:55
Done.
|
| + 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 mojo::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. |
|
Sam McNally
2016/06/20 01:27:11
Remove?
tibell
2016/06/20 03:19:55
Done.
|
| + 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( |
|
Sam McNally
2016/06/20 01:27:11
explicit.
tibell
2016/06/20 03:19:55
Done.
|
| + SearchProviderInstallStateMessageFilter* filter); |
|
Sam McNally
2016/06/20 01:27:11
This could take a unique_ptr.
tibell
2016/06/20 03:19:55
Done.
|
| + ~SearchProviderInstallStateMessageFilterAdapter() override; |
| + |
| + SearchProviderInstallStateMessageFilter* Get() { return ptr_.get(); } |
|
Sam McNally
2016/06/20 01:27:11
get()
tibell
2016/06/20 03:19:55
Done.
|
| + |
| + 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_ |