12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 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/chromeos/bluetooth/bluetooth_pairing_dialog.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/json/json_writer.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/browser_dialogs.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/url_constants.h"
116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/grit/generated_resources.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "device/bluetooth/bluetooth_device.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/size.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)namespace {
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Default width/height ratio of screen size.
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const int kDefaultWidth = 480;
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const int kDefaultHeight = 280;
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)///////////////////////////////////////////////////////////////////////////////
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// BluetoothPairingDialog, public:
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)BluetoothPairingDialog::BluetoothPairingDialog(
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    gfx::NativeWindow parent_window,
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const device::BluetoothDevice* device)
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    : parent_window_(parent_window) {
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  device_data_.SetString("address", device->GetAddress());
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  device_data_.SetString("name", device->GetName());
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  device_data_.SetBoolean("paired", device->IsPaired());
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  device_data_.SetBoolean("connected", device->IsConnected());
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)BluetoothPairingDialog::~BluetoothPairingDialog() {
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void BluetoothPairingDialog::Show() {
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Bluetooth settings are currently stored on the device, accessible for
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // everyone who uses the machine. As such we can use the active user profile.
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chrome::ShowWebDialog(parent_window_,
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                        ProfileManager::GetActiveUserProfile(),
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        this);
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)///////////////////////////////////////////////////////////////////////////////
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// LoginWebDialog, protected:
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ui::ModalType BluetoothPairingDialog::GetDialogModalType() const {
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return ui::MODAL_TYPE_SYSTEM;
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)base::string16 BluetoothPairingDialog::GetDialogTitle() const {
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return l10n_util::GetStringUTF16(
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      IDS_OPTIONS_SETTINGS_BLUETOOTH_ADD_DEVICE_TITLE);
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)GURL BluetoothPairingDialog::GetDialogContentURL() const {
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return GURL(chrome::kChromeUIBluetoothPairingURL);
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void BluetoothPairingDialog::GetWebUIMessageHandlers(
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    std::vector<WebUIMessageHandler*>* handlers) const {
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void BluetoothPairingDialog::GetDialogSize(gfx::Size* size) const {
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  size->SetSize(kDefaultWidth, kDefaultHeight);
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)std::string BluetoothPairingDialog::GetDialogArgs() const {
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string data;
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::JSONWriter::Write(&device_data_, &data);
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return data;
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void BluetoothPairingDialog::OnDialogClosed(const std::string& json_retval) {
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  delete this;
852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void BluetoothPairingDialog::OnCloseContents(WebContents* source,
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             bool* out_close_dialog) {
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (out_close_dialog)
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    *out_close_dialog = true;
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool BluetoothPairingDialog::ShouldShowDialogTitle() const {
942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return true;
952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool BluetoothPairingDialog::HandleContextMenu(
982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const content::ContextMenuParams& params) {
992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Disable context menu.
1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return true;
1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace chromeos
104