| // Copyright 2020 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. |
| |
| #include "chrome/browser/ui/webui/read_later/read_later_ui.h" |
| |
| #include <string> |
| #include <utility> |
| |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/webui/favicon_source.h" |
| #include "chrome/browser/ui/webui/read_later/read_later_page_handler.h" |
| #include "chrome/browser/ui/webui/webui_util.h" |
| #include "chrome/common/webui_url_constants.h" |
| #include "chrome/grit/generated_resources.h" |
| #include "chrome/grit/read_later_resources.h" |
| #include "chrome/grit/read_later_resources_map.h" |
| #include "components/favicon_base/favicon_url_parser.h" |
| #include "components/strings/grit/components_strings.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/browser/web_ui.h" |
| #include "content/public/browser/web_ui_data_source.h" |
| #include "ui/base/l10n/l10n_util.h" |
| #include "ui/base/webui/web_ui_util.h" |
| |
| namespace { |
| void AddLocalizedString(content::WebUIDataSource* source, |
| const std::string& message, |
| int id) { |
| base::string16 str = l10n_util::GetStringUTF16(id); |
| base::Erase(str, '&'); |
| source->AddString(message, str); |
| } |
| } // namespace |
| |
| ReadLaterUI::ReadLaterUI(content::WebUI* web_ui) |
| : ui::MojoBubbleWebUIController(web_ui) { |
| content::WebUIDataSource* source = |
| content::WebUIDataSource::Create(chrome::kChromeUIReadLaterHost); |
| static constexpr webui::LocalizedString kLocalizedStrings[] = { |
| {"emptyStateHeader", IDS_READ_LATER_MENU_EMPTY_STATE_HEADER}, |
| {"emptyStateSubheader", IDS_READ_LATER_MENU_EMPTY_STATE_SUBHEADER}, |
| {"readHeader", IDS_READ_LATER_MENU_READ_HEADER}, |
| {"title", IDS_READ_LATER_TITLE}, |
| {"tooltipClose", IDS_CLOSE}, |
| {"tooltipDelete", IDS_DELETE}, |
| {"tooltipMarkAsRead", IDS_READ_LATER_MENU_TOOLTIP_MARK_AS_READ}, |
| {"tooltipMarkAsUnread", IDS_READ_LATER_MENU_TOOLTIP_MARK_AS_UNREAD}, |
| {"unreadHeader", IDS_READ_LATER_MENU_UNREAD_HEADER}, |
| }; |
| for (const auto& str : kLocalizedStrings) |
| AddLocalizedString(source, str.name, str.id); |
| |
| Profile* profile = Profile::FromWebUI(web_ui); |
| content::URLDataSource::Add( |
| profile, std::make_unique<FaviconSource>( |
| profile, chrome::FaviconUrlFormat::kFavicon2)); |
| |
| webui::SetupWebUIDataSource( |
| source, base::make_span(kReadLaterResources, kReadLaterResourcesSize), |
| IDR_READ_LATER_READ_LATER_HTML); |
| content::WebUIDataSource::Add(web_ui->GetWebContents()->GetBrowserContext(), |
| source); |
| } |
| |
| ReadLaterUI::~ReadLaterUI() = default; |
| |
| WEB_UI_CONTROLLER_TYPE_IMPL(ReadLaterUI) |
| |
| void ReadLaterUI::BindInterface( |
| mojo::PendingReceiver<read_later::mojom::PageHandlerFactory> receiver) { |
| page_factory_receiver_.reset(); |
| page_factory_receiver_.Bind(std::move(receiver)); |
| } |
| |
| void ReadLaterUI::CreatePageHandler( |
| mojo::PendingRemote<read_later::mojom::Page> page, |
| mojo::PendingReceiver<read_later::mojom::PageHandler> receiver) { |
| DCHECK(page); |
| page_handler_ = std::make_unique<ReadLaterPageHandler>(std::move(receiver), |
| std::move(page), this); |
| } |