12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/bluetooth_pairing_ui.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/values.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/webui/options/chromeos/bluetooth_options_handler.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/webui/options/chromeos/core_chromeos_options_handler.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/url_constants.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/web_ui.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/web_ui_data_source.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "grit/browser_resources.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using content::WebContents; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using content::WebUIMessageHandler; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace chromeos { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)BluetoothPairingUI::BluetoothPairingUI(content::WebUI* web_ui) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : WebDialogUI(web_ui), 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) core_handler_(new options::CoreChromeOSOptionsHandler()), 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bluetooth_handler_(new options::BluetoothOptionsHandler()) { 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue localized_strings; 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_ui->AddMessageHandler(core_handler_); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) core_handler_->set_handlers_host(this); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) core_handler_->GetLocalizedValues(&localized_strings); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui->AddMessageHandler(bluetooth_handler_); 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bluetooth_handler_->GetLocalizedValues(&localized_strings); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebUIDataSource* source = 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebUIDataSource::Create(chrome::kChromeUIBluetoothPairingHost); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) source->SetUseJsonJSFormatV2(); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) source->AddLocalizedStrings(localized_strings); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) source->SetJsonPath("strings.js"); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) source->SetDefaultResource(IDR_BLUETOOTH_PAIR_DEVICE_HTML); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) source->DisableContentSecurityPolicy(); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebUIDataSource::Add(profile, source); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)BluetoothPairingUI::~BluetoothPairingUI() { 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Uninitialize all registered handlers. The base class owns them and it will 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // eventually delete them. 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) core_handler_->Uninitialize(); 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bluetooth_handler_->Uninitialize(); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void BluetoothPairingUI::InitializeHandlers() { 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) core_handler_->InitializeHandler(); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bluetooth_handler_->InitializeHandler(); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) core_handler_->InitializePage(); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bluetooth_handler_->InitializePage(); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace chromeos 61