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