13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/network_ui.h" 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include <string> 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/bind.h" 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/bind_helpers.h" 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/values.h" 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/network_config_message_handler.h" 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/common/url_constants.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/generated_resources.h" 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/network_event_log.h" 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "content/public/browser/web_contents.h" 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/public/browser/web_ui.h" 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/public/browser/web_ui_data_source.h" 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/public/browser/web_ui_message_handler.h" 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "grit/browser_resources.h" 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace chromeos { 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace { 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const int kMaxLogEvents = 1000; 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class NetworkUIMessageHandler : public content::WebUIMessageHandler { 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public: 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) NetworkUIMessageHandler() {} 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual ~NetworkUIMessageHandler() {} 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // WebUIMessageHandler implementation. 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void RegisterMessages() OVERRIDE { 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) web_ui()->RegisterMessageCallback( 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "NetworkUI.getNetworkLog", 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::Bind(&NetworkUIMessageHandler::GetNetworkLog, 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::Unretained(this))); 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) private: 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void GetNetworkLog(const base::ListValue* value) const { 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::StringValue data(chromeos::network_event_log::GetAsString( 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chromeos::network_event_log::NEWEST_FIRST, 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "json", 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chromeos::network_event_log::LOG_LEVEL_DEBUG, 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) kMaxLogEvents)); 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) web_ui()->CallJavascriptFunction("NetworkUI.getNetworkLogCallback", data); 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(NetworkUIMessageHandler); 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace 553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)NetworkUI::NetworkUI(content::WebUI* web_ui) 573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) : content::WebUIController(web_ui) { 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) web_ui->AddMessageHandler(new NetworkConfigMessageHandler()); 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) web_ui->AddMessageHandler(new NetworkUIMessageHandler()); 603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) content::WebUIDataSource* html = 623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) content::WebUIDataSource::Create(chrome::kChromeUINetworkHost); 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) html->SetUseJsonJSFormatV2(); 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) html->AddLocalizedString("titleText", IDS_NETWORK_TITLE); 663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) html->AddLocalizedString("autoRefreshText", IDS_NETWORK_AUTO_REFRESH); 673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) html->AddLocalizedString("logRefreshText", IDS_NETWORK_LOG_REFRESH); 683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) html->AddLocalizedString("logLevelShowText", IDS_NETWORK_LOG_LEVEL_SHOW); 693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) html->AddLocalizedString("logLevelErrorText", IDS_NETWORK_LOG_LEVEL_ERROR); 703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) html->AddLocalizedString("logLevelUserText", IDS_NETWORK_LOG_LEVEL_USER); 713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) html->AddLocalizedString("logLevelEventText", IDS_NETWORK_LOG_LEVEL_EVENT); 723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) html->AddLocalizedString("logLevelDebugText", IDS_NETWORK_LOG_LEVEL_DEBUG); 73424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) html->AddLocalizedString("logLevelFileinfoText", 74424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) IDS_NETWORK_LOG_LEVEL_FILEINFO); 75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) html->AddLocalizedString("logLevelTimeDetailText", 76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IDS_NETWORK_LOG_LEVEL_TIME_DETAIL); 773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) html->AddLocalizedString("logEntryFormat", IDS_NETWORK_LOG_ENTRY); 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) html->SetJsonPath("strings.js"); 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) html->AddResourcePath("network_config.js", IDR_NETWORK_CONFIG_JS); 80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) html->AddResourcePath("network_ui.css", IDR_NETWORK_UI_CSS); 81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) html->AddResourcePath("network_ui.js", IDR_NETWORK_UI_JS); 82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) html->SetDefaultResource(IDR_NETWORK_UI_HTML); 83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 84cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::WebUIDataSource::Add( 85cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) web_ui->GetWebContents()->GetBrowserContext(), html); 863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)NetworkUI::~NetworkUI() { 893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace chromeos 92