| // Copyright 2015 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/settings/md_settings_ui.h" |
| |
| #include <stddef.h> |
| |
| #include <string> |
| |
| #include "base/metrics/histogram_macros.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/webui/settings/appearance_handler.h" |
| #include "chrome/browser/ui/webui/settings/downloads_handler.h" |
| #include "chrome/browser/ui/webui/settings/font_handler.h" |
| #include "chrome/browser/ui/webui/settings/languages_handler.h" |
| #include "chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.h" |
| #include "chrome/browser/ui/webui/settings/people_handler.h" |
| #include "chrome/browser/ui/webui/settings/reset_settings_handler.h" |
| #include "chrome/browser/ui/webui/settings/search_engines_handler.h" |
| #include "chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.h" |
| #include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h" |
| #include "chrome/browser/ui/webui/settings/settings_startup_pages_handler.h" |
| #include "chrome/browser/ui/webui/settings/site_settings_handler.h" |
| #include "chrome/common/url_constants.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 "grit/settings_resources.h" |
| #include "grit/settings_resources_map.h" |
| |
| #if defined(OS_CHROMEOS) |
| #include "chrome/browser/ui/webui/settings/chromeos/change_picture_handler.h" |
| #include "chrome/browser/ui/webui/settings/chromeos/device_keyboard_handler.h" |
| #include "chrome/browser/ui/webui/settings/chromeos/easy_unlock_settings_handler.h" |
| #else // !defined(OS_CHROMEOS) |
| #include "chrome/browser/ui/webui/settings/settings_default_browser_handler.h" |
| #include "chrome/browser/ui/webui/settings/settings_manage_profile_handler.h" |
| #include "chrome/browser/ui/webui/settings/system_handler.h" |
| #endif // defined(OS_CHROMEOS) |
| |
| #if defined(USE_NSS_CERTS) |
| #include "chrome/browser/ui/webui/settings/certificates_handler.h" |
| #endif // defined(USE_NSS_CERTS) |
| |
| namespace settings { |
| |
| MdSettingsUI::MdSettingsUI(content::WebUI* web_ui) |
| : content::WebUIController(web_ui), |
| WebContentsObserver(web_ui->GetWebContents()) { |
| Profile* profile = Profile::FromWebUI(web_ui); |
| AddSettingsPageUIHandler(new AppearanceHandler(web_ui)); |
| |
| #if defined(USE_NSS_CERTS) |
| AddSettingsPageUIHandler(new CertificatesHandler(false)); |
| #endif // defined(USE_NSS_CERTS) |
| |
| AddSettingsPageUIHandler(new ClearBrowsingDataHandler(web_ui)); |
| AddSettingsPageUIHandler(new DownloadsHandler()); |
| AddSettingsPageUIHandler(new FontHandler(web_ui)); |
| AddSettingsPageUIHandler(new LanguagesHandler(web_ui)); |
| AddSettingsPageUIHandler(new PeopleHandler(profile)); |
| AddSettingsPageUIHandler(new SearchEnginesHandler(profile)); |
| AddSettingsPageUIHandler(new SiteSettingsHandler(profile)); |
| AddSettingsPageUIHandler(new StartupPagesHandler(web_ui)); |
| |
| #if defined(OS_CHROMEOS) |
| AddSettingsPageUIHandler(new chromeos::settings::ChangePictureHandler()); |
| AddSettingsPageUIHandler(new chromeos::settings::KeyboardHandler(web_ui)); |
| #else |
| AddSettingsPageUIHandler(new DefaultBrowserHandler(web_ui)); |
| AddSettingsPageUIHandler(new ManageProfileHandler(profile)); |
| AddSettingsPageUIHandler(new SystemHandler()); |
| #endif |
| |
| content::WebUIDataSource* html_source = |
| content::WebUIDataSource::Create(chrome::kChromeUIMdSettingsHost); |
| |
| #if defined(OS_CHROMEOS) |
| chromeos::settings::EasyUnlockSettingsHandler* easy_unlock_handler = |
| chromeos::settings::EasyUnlockSettingsHandler::Create(html_source, |
| profile); |
| if (easy_unlock_handler) |
| AddSettingsPageUIHandler(easy_unlock_handler); |
| #endif |
| |
| AddSettingsPageUIHandler(ResetSettingsHandler::Create(html_source, profile)); |
| |
| // Add all settings resources. |
| for (size_t i = 0; i < kSettingsResourcesSize; ++i) { |
| html_source->AddResourcePath(kSettingsResources[i].name, |
| kSettingsResources[i].value); |
| } |
| |
| AddLocalizedStrings(html_source, profile); |
| html_source->SetDefaultResource(IDR_SETTINGS_SETTINGS_HTML); |
| |
| content::WebUIDataSource::Add(web_ui->GetWebContents()->GetBrowserContext(), |
| html_source); |
| } |
| |
| MdSettingsUI::~MdSettingsUI() { |
| } |
| |
| void MdSettingsUI::RenderViewReused( |
| content::RenderViewHost* /*render_view_host*/) { |
| for (SettingsPageUIHandler* handler : handlers_) |
| handler->RenderViewReused(); |
| } |
| |
| void MdSettingsUI::AddSettingsPageUIHandler(SettingsPageUIHandler* handler) { |
| DCHECK(handler); |
| handlers_.insert(handler); |
| web_ui()->AddMessageHandler(handler); // |handler| is owned by |web_ui()|. |
| } |
| |
| void MdSettingsUI::DidStartProvisionalLoadForFrame( |
| content::RenderFrameHost* render_frame_host, |
| const GURL& validated_url, |
| bool is_error_page, |
| bool is_iframe_srcdoc) { |
| load_start_time_ = base::Time::Now(); |
| } |
| |
| void MdSettingsUI::DocumentLoadedInFrame( |
| content::RenderFrameHost* render_frame_host) { |
| UMA_HISTOGRAM_TIMES("Settings.LoadDocumentTime.MD", |
| base::Time::Now() - load_start_time_); |
| } |
| |
| void MdSettingsUI::DocumentOnLoadCompletedInMainFrame() { |
| UMA_HISTOGRAM_TIMES("Settings.LoadCompletedTime.MD", |
| base::Time::Now() - load_start_time_); |
| } |
| |
| } // namespace settings |