local_discovery_ui.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
19ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 29ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 39ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// found in the LICENSE file. 49ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 59ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/ui/webui/local_discovery/local_discovery_ui.h" 69ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/profiles/profile.h" 89ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h" 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/webui/metrics_handler.h" 1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/common/pref_names.h" 119ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/common/url_constants.h" 129ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "content/public/browser/web_ui.h" 139ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "content/public/browser/web_ui_data_source.h" 149ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "grit/browser_resources.h" 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "grit/generated_resources.h" 169ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 179ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochnamespace { 189ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 199ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochcontent::WebUIDataSource* CreateLocalDiscoveryHTMLSource() { 209ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::WebUIDataSource* source = 21d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) content::WebUIDataSource::Create(chrome::kChromeUIDevicesHost); 229ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 239ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch source->SetDefaultResource(IDR_LOCAL_DISCOVERY_HTML); 249ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch source->AddResourcePath("local_discovery.css", IDR_LOCAL_DISCOVERY_CSS); 259ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch source->AddResourcePath("local_discovery.js", IDR_LOCAL_DISCOVERY_JS); 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) source->AddResourcePath("printer.png", IDR_LOCAL_DISCOVERY_PRINTER_PNG); 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) source->SetUseJsonJSFormatV2(); 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) source->AddLocalizedString("serviceRegister", 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) IDS_LOCAL_DISCOVERY_SERVICE_REGISTER); 31424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) source->AddLocalizedString("registerConfirmMessage", 33424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) IDS_LOCAL_DISCOVERY_REGISTER_CONFIRMATION); 34424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) source->AddLocalizedString("registerUser", 35424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) IDS_LOCAL_DISCOVERY_REGISTER_USER); 36424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) source->AddLocalizedString("confirmRegistration", 37424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) IDS_LOCAL_DISCOVERY_CONFIRM_REGISTRATION); 38424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) source->AddLocalizedString("addingPrinter", 39424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) IDS_LOCAL_DISCOVERY_ADDING_PRINTER); 40424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) source->AddLocalizedString("addingError", 41424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) IDS_LOCAL_DISCOVERY_ERROR_OCURRED); 42424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) source->AddLocalizedString("addingErrorMessage", 43424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) IDS_LOCAL_DISCOVERY_ERROR_OCURRED_MESSAGE); 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) source->AddLocalizedString("addingCanceledMessage", 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) IDS_LOCAL_DISCOVERY_REGISTER_CANCELED_ON_PRINTER); 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) source->AddLocalizedString("addingTimeoutMessage", 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) IDS_LOCAL_DISCOVERY_REGISTER_TIMEOUT_ON_PRINTER); 48424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) source->AddLocalizedString("addingMessage1", 49424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) IDS_LOCAL_DISCOVERY_ADDING_PRINTER_MESSAGE1); 50424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) source->AddLocalizedString("addingMessage2", 51424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) IDS_LOCAL_DISCOVERY_ADDING_PRINTER_MESSAGE2); 52424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) source->AddLocalizedString("devicesTitle", 53424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) IDS_LOCAL_DISCOVERY_DEVICES_PAGE_TITLE); 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) source->AddLocalizedString("noDescription", 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) IDS_LOCAL_DISCOVERY_NO_DESCRIPTION); 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) source->AddLocalizedString("printersOnNetworkZero", 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) IDS_LOCAL_DISCOVERY_PRINTERS_ON_NETWORK_ZERO); 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) source->AddLocalizedString("printersOnNetworkOne", 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) IDS_LOCAL_DISCOVERY_PRINTERS_ON_NETWORK_ONE); 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) source->AddLocalizedString("printersOnNetworkMultiple", 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) IDS_LOCAL_DISCOVERY_PRINTERS_ON_NETWORK_MULTIPLE); 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) source->AddLocalizedString("cancel", IDS_CANCEL); 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) source->AddLocalizedString("ok", IDS_OK); 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) source->AddLocalizedString("loading", IDS_LOCAL_DISCOVERY_LOADING); 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) source->AddLocalizedString("addPrinters", IDS_LOCAL_DISCOVERY_ADD_PRINTERS); 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) source->AddLocalizedString( 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) "noPrintersOnNetworkExplanation", 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) IDS_LOCAL_DISCOVERY_NO_PRINTERS_ON_NETWORK_EXPLANATION); 69d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) source->AddLocalizedString("cloudDevicesUnavailable", 70d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) IDS_LOCAL_DISCOVERY_CLOUD_DEVICES_UNAVAILABLE); 71d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) source->AddLocalizedString("retryLoadCloudDevices", 72d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) IDS_LOCAL_DISCOVERY_RETRY_LOAD_CLOUD_DEVICES); 73d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) source->AddLocalizedString("cloudDevicesNeedLogin", 74d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) IDS_LOCAL_DISCOVERY_CLOUD_DEVICES_NEED_LOGIN); 75d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) source->AddLocalizedString("cloudDevicesLogin", 76d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) IDS_LOCAL_DISCOVERY_CLOUD_DEVICES_LOGIN); 77d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) source->AddLocalizedString("registerNeedLogin", 78d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) IDS_LOCAL_DISCOVERY_REGISTER_NEED_LOGIN); 7968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) source->AddLocalizedString("availableDevicesTitle", 8068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IDS_LOCAL_DISCOVERY_AVAILABLE_DEVICES); 8168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) source->AddLocalizedString("myDevicesTitle", 8268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IDS_LOCAL_DISCOVERY_MY_DEVICES); 8368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 8468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 8568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Cloud print connector-related strings. 8668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#if defined(ENABLE_FULL_PRINTING) && !defined(OS_CHROMEOS) 8768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) source->AddLocalizedString("cloudPrintConnectorEnablingButton", 8868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_ENABLING_BUTTON); 8968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) source->AddLocalizedString("cloudPrintConnectorDisabledButton", 9068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_DISABLED_BUTTON); 9168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) source->AddLocalizedString("cloudPrintConnectorEnabledButton", 9268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_ENABLED_BUTTON); 9368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) source->AddLocalizedString("cloudPrintName", 9468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IDS_GOOGLE_CLOUD_PRINT); 9568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) source->AddLocalizedString("titleConnector", 9668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IDS_LOCAL_DISCOVERY_CONNECTOR_SECTION); 9768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) source->SetJsonPath("strings.js"); 1003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 101424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) source->DisableDenyXFrameOptions(); 102424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 1039ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch return source; 1049ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 1059ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1069ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} // namespace 1079ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1089ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben MurdochLocalDiscoveryUI::LocalDiscoveryUI(content::WebUI* web_ui) 1099ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch : WebUIController(web_ui) { 1109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Set up the chrome://devices/ source. 1119ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch Profile* profile = Profile::FromWebUI(web_ui); 1129ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::WebUIDataSource::Add(profile, CreateLocalDiscoveryHTMLSource()); 1139ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1149ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // TODO(gene): Use LocalDiscoveryUIHandler to send updated to the devices 1159ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // page. For example 1164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) web_ui->AddMessageHandler(new local_discovery::LocalDiscoveryUIHandler()); 11758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) web_ui->AddMessageHandler(new MetricsHandler()); 1189ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 11968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 12068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)void LocalDiscoveryUI::RegisterProfilePrefs( 12168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) { 12268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) registry->RegisterBooleanPref( 12368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) prefs::kLocalDiscoveryNotificationsEnabled, 12468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#if defined(OS_WIN) 12568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) false, 12668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#else 12768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) true, 12868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 12968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 13068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 131