1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/chromeos/bluetooth/bluetooth_pairing_dialog.h" 6 7 #include "base/json/json_writer.h" 8 #include "chrome/browser/profiles/profile_manager.h" 9 #include "chrome/browser/ui/browser_dialogs.h" 10 #include "chrome/common/url_constants.h" 11 #include "device/bluetooth/bluetooth_device.h" 12 #include "grit/generated_resources.h" 13 #include "ui/base/l10n/l10n_util.h" 14 #include "ui/gfx/size.h" 15 16 using content::WebContents; 17 using content::WebUIMessageHandler; 18 19 namespace chromeos { 20 21 namespace { 22 23 // Default width/height ratio of screen size. 24 const int kDefaultWidth = 480; 25 const int kDefaultHeight = 280; 26 27 } // namespace 28 29 /////////////////////////////////////////////////////////////////////////////// 30 // BluetoothPairingDialog, public: 31 32 BluetoothPairingDialog::BluetoothPairingDialog( 33 gfx::NativeWindow parent_window, 34 const device::BluetoothDevice* device) 35 : parent_window_(parent_window) { 36 device_data_.SetString("address", device->GetAddress()); 37 device_data_.SetString("name", device->GetName()); 38 device_data_.SetBoolean("paired", device->IsPaired()); 39 device_data_.SetBoolean("connected", device->IsConnected()); 40 } 41 42 BluetoothPairingDialog::~BluetoothPairingDialog() { 43 } 44 45 void BluetoothPairingDialog::Show() { 46 // Bluetooth settings are currently stored on the device, accessible for 47 // everyone who uses the machine. As such we can use the active user profile. 48 chrome::ShowWebDialog(parent_window_, 49 ProfileManager::GetActiveUserProfile(), 50 this); 51 } 52 53 /////////////////////////////////////////////////////////////////////////////// 54 // LoginWebDialog, protected: 55 56 ui::ModalType BluetoothPairingDialog::GetDialogModalType() const { 57 return ui::MODAL_TYPE_SYSTEM; 58 } 59 60 base::string16 BluetoothPairingDialog::GetDialogTitle() const { 61 return l10n_util::GetStringUTF16( 62 IDS_OPTIONS_SETTINGS_BLUETOOTH_ADD_DEVICE_TITLE); 63 } 64 65 GURL BluetoothPairingDialog::GetDialogContentURL() const { 66 return GURL(chrome::kChromeUIBluetoothPairingURL); 67 } 68 69 void BluetoothPairingDialog::GetWebUIMessageHandlers( 70 std::vector<WebUIMessageHandler*>* handlers) const { 71 } 72 73 void BluetoothPairingDialog::GetDialogSize(gfx::Size* size) const { 74 size->SetSize(kDefaultWidth, kDefaultHeight); 75 } 76 77 std::string BluetoothPairingDialog::GetDialogArgs() const { 78 std::string data; 79 base::JSONWriter::Write(&device_data_, &data); 80 return data; 81 } 82 83 void BluetoothPairingDialog::OnDialogClosed(const std::string& json_retval) { 84 delete this; 85 } 86 87 void BluetoothPairingDialog::OnCloseContents(WebContents* source, 88 bool* out_close_dialog) { 89 if (out_close_dialog) 90 *out_close_dialog = true; 91 } 92 93 bool BluetoothPairingDialog::ShouldShowDialogTitle() const { 94 return true; 95 } 96 97 bool BluetoothPairingDialog::HandleContextMenu( 98 const content::ContextMenuParams& params) { 99 // Disable context menu. 100 return true; 101 } 102 103 } // namespace chromeos 104