Commit e18b5ed3 authored by Henrique Ferreiro's avatar Henrique Ferreiro Committed by Commit Bot

Migrate snippets_internals.mojom to the new Mojo types

Convert the implementation and all users of the
snippets_internals::mojom::PageHandlerFactory, PageHandler and Page
interfaces.

Bug: 955171
Change-Id: Ifaefd53184ce0f547b5048df1ffe2e144cf5fa4e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1807223Reviewed-by: default avatarEmily Stark <estark@chromium.org>
Reviewed-by: default avatarCarlos Knippschild <carlosk@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Commit-Queue: Henrique Ferreiro <hferreiro@igalia.com>
Cr-Commit-Position: refs/heads/master@{#703483}
parent e7e326d5
......@@ -26,7 +26,8 @@ struct SuggestionItem {
};
interface PageHandlerFactory {
CreatePageHandler(Page page) => (PageHandler handler);
CreatePageHandler(pending_remote<Page> page) =>
(pending_remote<PageHandler> handler);
};
// Browser interface.
......
......@@ -15,6 +15,7 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/ui/webui/snippets_internals/snippets_internals.mojom.h"
#include "chrome/common/pref_names.h"
#include "components/ntp_snippets/category_info.h"
#include "components/ntp_snippets/features.h"
......@@ -106,11 +107,11 @@ snippets_internals::mojom::SuggestionItemPtr PrepareContentSuggestionItem(
// TODO: Add browser tests.
SnippetsInternalsPageHandler::SnippetsInternalsPageHandler(
snippets_internals::mojom::PageHandlerRequest request,
snippets_internals::mojom::PagePtr page,
mojo::PendingReceiver<snippets_internals::mojom::PageHandler> receiver,
mojo::PendingRemote<snippets_internals::mojom::Page> page,
ntp_snippets::ContentSuggestionsService* content_suggestions_service,
PrefService* pref_service)
: binding_(this, std::move(request)),
: receiver_(this, std::move(receiver)),
content_suggestions_service_observer_(this),
content_suggestions_service_(content_suggestions_service),
remote_suggestions_provider_(
......
......@@ -15,7 +15,10 @@
#include "components/ntp_snippets/content_suggestions_service.h"
#include "components/ntp_snippets/remote/remote_suggestions_provider.h"
#include "components/prefs/pref_service.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
// TODO: Write tests for this.
class SnippetsInternalsPageHandler
......@@ -23,8 +26,8 @@ class SnippetsInternalsPageHandler
public ntp_snippets::ContentSuggestionsService::Observer {
public:
explicit SnippetsInternalsPageHandler(
snippets_internals::mojom::PageHandlerRequest request,
snippets_internals::mojom::PagePtr,
mojo::PendingReceiver<snippets_internals::mojom::PageHandler> receiver,
mojo::PendingRemote<snippets_internals::mojom::Page> page,
ntp_snippets::ContentSuggestionsService* content_suggestions_service,
PrefService* pref_service);
~SnippetsInternalsPageHandler() override;
......@@ -67,8 +70,8 @@ class SnippetsInternalsPageHandler
GetSuggestionsByCategoryCallback callback,
std::vector<ntp_snippets::ContentSuggestion> suggestions);
// Binding from the mojo interface to concrete impl.
mojo::Binding<snippets_internals::mojom::PageHandler> binding_;
// Receiver from the mojo interface to concrete impl.
mojo::Receiver<snippets_internals::mojom::PageHandler> receiver_;
// Observer to notify frontend of dirty data.
ScopedObserver<ntp_snippets::ContentSuggestionsService,
......@@ -90,7 +93,7 @@ class SnippetsInternalsPageHandler
base::OneShotTimer suggestion_fetch_timer_;
// Handle back to the page by which we can update.
snippets_internals::mojom::PagePtr page_;
mojo::Remote<snippets_internals::mojom::Page> page_;
base::WeakPtrFactory<SnippetsInternalsPageHandler> weak_ptr_factory_{this};
......
......@@ -4,20 +4,25 @@
#include "chrome/browser/ui/webui/snippets_internals/snippets_internals_ui.h"
#include <memory>
#include <utility>
#include "base/bind.h"
#include "chrome/browser/ntp_snippets/content_suggestions_service_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/webui/snippets_internals/snippets_internals.mojom.h"
#include "chrome/browser/ui/webui/snippets_internals/snippets_internals_page_handler.h"
#include "chrome/common/url_constants.h"
#include "chrome/grit/browser_resources.h"
#include "content/public/browser/web_ui_data_source.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#if defined(OS_ANDROID)
#include "chrome/browser/android/chrome_feature_list.h"
#endif
SnippetsInternalsUI::SnippetsInternalsUI(content::WebUI* web_ui)
: ui::MojoWebUIController(web_ui), binding_(this) {
: ui::MojoWebUIController(web_ui) {
content::WebUIDataSource* source =
content::WebUIDataSource::Create(chrome::kChromeUISnippetsInternalsHost);
source->OverrideContentSecurityPolicyScriptSrc(
......@@ -41,20 +46,20 @@ SnippetsInternalsUI::SnippetsInternalsUI(content::WebUI* web_ui)
SnippetsInternalsUI::~SnippetsInternalsUI() {}
void SnippetsInternalsUI::BindSnippetsInternalsPageHandlerFactory(
snippets_internals::mojom::PageHandlerFactoryRequest request) {
if (binding_.is_bound())
binding_.Unbind();
mojo::PendingReceiver<snippets_internals::mojom::PageHandlerFactory>
receiver) {
receiver_.reset();
binding_.Bind(std::move(request));
receiver_.Bind(std::move(receiver));
}
void SnippetsInternalsUI::CreatePageHandler(
snippets_internals::mojom::PagePtr page,
mojo::PendingRemote<snippets_internals::mojom::Page> page,
CreatePageHandlerCallback callback) {
DCHECK(page);
snippets_internals::mojom::PageHandlerPtr handler;
mojo::PendingRemote<snippets_internals::mojom::PageHandler> handler;
page_handler_ = std::make_unique<SnippetsInternalsPageHandler>(
mojo::MakeRequest(&handler), std::move(page),
handler.InitWithNewPipeAndPassReceiver(), std::move(page),
content_suggestions_service_, pref_service_);
std::move(callback).Run(std::move(handler));
......
......@@ -10,7 +10,9 @@
#include "chrome/browser/ui/webui/snippets_internals/snippets_internals.mojom.h"
#include "components/ntp_snippets/content_suggestions_service.h"
#include "components/prefs/pref_service.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "ui/webui/mojo_web_ui_controller.h"
class SnippetsInternalsPageHandler;
......@@ -23,19 +25,21 @@ class SnippetsInternalsUI
explicit SnippetsInternalsUI(content::WebUI* web_ui);
~SnippetsInternalsUI() override;
void CreatePageHandler(snippets_internals::mojom::PagePtr page,
CreatePageHandlerCallback callback) override;
void CreatePageHandler(
mojo::PendingRemote<snippets_internals::mojom::Page> page,
CreatePageHandlerCallback callback) override;
private:
void BindSnippetsInternalsPageHandlerFactory(
snippets_internals::mojom::PageHandlerFactoryRequest request);
mojo::PendingReceiver<snippets_internals::mojom::PageHandlerFactory>
receiver);
std::unique_ptr<SnippetsInternalsPageHandler> page_handler_;
ntp_snippets::ContentSuggestionsService* content_suggestions_service_;
PrefService* pref_service_;
// Binding from the mojo interface to concrete impl.
mojo::Binding<snippets_internals::mojom::PageHandlerFactory> binding_;
// Receiver from the mojo interface to concrete impl.
mojo::Receiver<snippets_internals::mojom::PageHandlerFactory> receiver_{this};
DISALLOW_COPY_AND_ASSIGN(SnippetsInternalsUI);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment