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