| Index: ios/chrome/browser/ui/webui/site_tiles_internals_ui.cc
|
| diff --git a/ios/chrome/browser/ui/webui/site_tiles_internals_ui.cc b/ios/chrome/browser/ui/webui/site_tiles_internals_ui.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7accf53ab121d9c4b05e35eeefc9ba30ab5ed6ca
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/webui/site_tiles_internals_ui.cc
|
| @@ -0,0 +1,124 @@
|
| +// Copyright 2016 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 "ios/chrome/browser/ui/webui/site_tiles_internals_ui.h"
|
| +
|
| +#include "components/grit/components_resources.h"
|
| +#include "components/ntp_tiles/field_trial.h"
|
| +#include "components/ntp_tiles/most_visited_sites.h"
|
| +#include "components/ntp_tiles/popular_sites.h"
|
| +#include "components/ntp_tiles/webui/site_tiles_internals_message_handler.h"
|
| +#include "components/ntp_tiles/webui/site_tiles_internals_message_handler_client.h"
|
| +#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
|
| +#include "ios/chrome/browser/chrome_url_constants.h"
|
| +#include "ios/chrome/browser/ntp_tiles/ios_most_visited_sites_factory.h"
|
| +#include "ios/chrome/browser/ntp_tiles/ios_popular_sites_factory.h"
|
| +#include "ios/web/public/web_thread.h"
|
| +#include "ios/web/public/web_ui_ios_data_source.h"
|
| +#include "ios/web/public/webui/web_ui_ios.h"
|
| +#include "ios/web/public/webui/web_ui_ios_message_handler.h"
|
| +
|
| +namespace {
|
| +
|
| +// The implementation for the chrome://popular-sites-internals page.
|
| +class IOSSiteTilesInternalsMessageHandlerBridge
|
| + : public web::WebUIIOSMessageHandler,
|
| + public ntp_tiles::SiteTilesInternalsMessageHandlerClient {
|
| + public:
|
| + IOSSiteTilesInternalsMessageHandlerBridge() : handler_(this) {}
|
| +
|
| + private:
|
| + // web::WebUIIOSMessageHandler:
|
| + void RegisterMessages() override;
|
| +
|
| + // ntp_tiles::SiteTilesInternalsMessageHandlerClient
|
| + base::SequencedWorkerPool* GetBlockingPool() override;
|
| + bool IsSourceEnabled(ntp_tiles::NTPTileSource source) override;
|
| + std::unique_ptr<ntp_tiles::MostVisitedSites> MakeMostVisitedSites() override;
|
| + std::unique_ptr<ntp_tiles::PopularSites> MakePopularSites() override;
|
| + PrefService* GetPrefs() override;
|
| + void RegisterMessageCallback(
|
| + const std::string& message,
|
| + const base::Callback<void(const base::ListValue*)>& callback) override;
|
| + void CallJavascriptFunctionVector(
|
| + const std::string& name,
|
| + const std::vector<const base::Value*>& values) override;
|
| +
|
| + ntp_tiles::SiteTilesInternalsMessageHandler handler_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(IOSSiteTilesInternalsMessageHandlerBridge);
|
| +};
|
| +
|
| +void IOSSiteTilesInternalsMessageHandlerBridge::RegisterMessages() {
|
| + handler_.RegisterMessages();
|
| +}
|
| +
|
| +base::SequencedWorkerPool*
|
| +IOSSiteTilesInternalsMessageHandlerBridge::GetBlockingPool() {
|
| + return web::WebThread::GetBlockingPool();
|
| +}
|
| +
|
| +bool IOSSiteTilesInternalsMessageHandlerBridge::IsSourceEnabled(
|
| + ntp_tiles::NTPTileSource source) {
|
| + switch (source) {
|
| + case ntp_tiles::NTPTileSource::TOP_SITES:
|
| + case ntp_tiles::NTPTileSource::SUGGESTIONS_SERVICE:
|
| + return true;
|
| + case ntp_tiles::NTPTileSource::POPULAR:
|
| + return ntp_tiles::ShouldShowPopularSites();
|
| + default:
|
| + return false;
|
| + }
|
| +}
|
| +
|
| +std::unique_ptr<ntp_tiles::MostVisitedSites>
|
| +IOSSiteTilesInternalsMessageHandlerBridge::MakeMostVisitedSites() {
|
| + return IOSMostVisitedSitesFactory::NewForBrowserState(
|
| + ios::ChromeBrowserState::FromWebUIIOS(web_ui()));
|
| +}
|
| +
|
| +std::unique_ptr<ntp_tiles::PopularSites>
|
| +IOSSiteTilesInternalsMessageHandlerBridge::MakePopularSites() {
|
| + return IOSPopularSitesFactory::NewForBrowserState(
|
| + ios::ChromeBrowserState::FromWebUIIOS(web_ui()));
|
| +}
|
| +
|
| +PrefService* IOSSiteTilesInternalsMessageHandlerBridge::GetPrefs() {
|
| + return ios::ChromeBrowserState::FromWebUIIOS(web_ui())->GetPrefs();
|
| +}
|
| +
|
| +void IOSSiteTilesInternalsMessageHandlerBridge::RegisterMessageCallback(
|
| + const std::string& message,
|
| + const base::Callback<void(const base::ListValue*)>& callback) {
|
| + web_ui()->RegisterMessageCallback(message, callback);
|
| +}
|
| +
|
| +void IOSSiteTilesInternalsMessageHandlerBridge::CallJavascriptFunctionVector(
|
| + const std::string& name,
|
| + const std::vector<const base::Value*>& values) {
|
| + web_ui()->CallJavascriptFunction(name, values);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +web::WebUIIOSDataSource* CreateSiteTilesInternalsHTMLSource() {
|
| + web::WebUIIOSDataSource* source =
|
| + web::WebUIIOSDataSource::Create(kChromeUISiteTilesInternalsHost);
|
| +
|
| + source->AddResourcePath("site_tiles_internals.js",
|
| + IDR_SITE_TILES_INTERNALS_JS);
|
| + source->AddResourcePath("site_tiles_internals.css",
|
| + IDR_SITE_TILES_INTERNALS_CSS);
|
| + source->SetDefaultResource(IDR_SITE_TILES_INTERNALS_HTML);
|
| + return source;
|
| +}
|
| +
|
| +SiteTilesInternalsUI::SiteTilesInternalsUI(web::WebUIIOS* web_ui)
|
| + : web::WebUIIOSController(web_ui) {
|
| + web::WebUIIOSDataSource::Add(ios::ChromeBrowserState::FromWebUIIOS(web_ui),
|
| + CreateSiteTilesInternalsHTMLSource());
|
| + web_ui->AddMessageHandler(new IOSSiteTilesInternalsMessageHandlerBridge);
|
| +}
|
| +
|
| +SiteTilesInternalsUI::~SiteTilesInternalsUI() {}
|
|
|