Home | History | Annotate | Download | only in bluetooth
      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